From ddef067837cde4f0fc1b786c69bcf056c3d5eae8 Mon Sep 17 00:00:00 2001 From: Vincent Povirk Date: Wed, 10 Mar 2010 13:57:35 -0600 Subject: [PATCH 2/8] ole32: Don't treat the header as a big block in StorageImpl_SaveFileHeader. --- dlls/ole32/storage32.c | 20 +++++++++++++------- 1 files changed, 13 insertions(+), 7 deletions(-) diff --git a/dlls/ole32/storage32.c b/dlls/ole32/storage32.c index 02a91ec..70dcce8 100644 --- a/dlls/ole32/storage32.c +++ b/dlls/ole32/storage32.c @@ -3381,29 +3381,35 @@ static HRESULT StorageImpl_LoadFileHeader( /****************************************************************************** * Storage32Impl_SaveFileHeader * - * This method will save to the file the header, i.e. big block -1. + * This method will save to the file the header */ static void StorageImpl_SaveFileHeader( StorageImpl* This) { - BYTE headerBigBlock[BIG_BLOCK_SIZE]; + BYTE headerBigBlock[HEADER_SIZE]; int index; - BOOL success; + HRESULT hr; + ULARGE_INTEGER offset; + DWORD bytes_read, bytes_written; /* * Get a pointer to the big block of data containing the header. */ - success = StorageImpl_ReadBigBlock(This, -1, headerBigBlock); + offset.u.HighPart = 0; + offset.u.LowPart = 0; + hr = StorageImpl_ReadAt(This, offset, headerBigBlock, HEADER_SIZE, &bytes_read); + if (SUCCEEDED(hr) && bytes_read != HEADER_SIZE) + hr = STG_E_FILENOTFOUND; /* * If the block read failed, the file is probably new. */ - if (!success) + if (FAILED(hr)) { /* * Initialize for all unknown fields. */ - memset(headerBigBlock, 0, BIG_BLOCK_SIZE); + memset(headerBigBlock, 0, HEADER_SIZE); /* * Initialize the magic number. @@ -3474,7 +3480,7 @@ static void StorageImpl_SaveFileHeader( /* * Write the big block back to the file. */ - StorageImpl_WriteBigBlock(This, -1, headerBigBlock); + StorageImpl_WriteAt(This, offset, headerBigBlock, HEADER_SIZE, &bytes_written); } /****************************************************************************** -- 1.6.3.3