Module: wine Branch: master Commit: 73419dc48498ee925f80478ffebd4f18089536b8 URL: http://source.winehq.org/git/wine.git/?a=commit;h=73419dc48498ee925f80478ffe...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Mon Dec 29 17:44:47 2014 +0300
ole32: Return END_OF_CHAIN for chains starting with special sector values.
---
dlls/ole32/storage32.c | 9 ++------- dlls/ole32/storage32.h | 1 + 2 files changed, 3 insertions(+), 7 deletions(-)
diff --git a/dlls/ole32/storage32.c b/dlls/ole32/storage32.c index 6ebc1e7..26fc0d8 100644 --- a/dlls/ole32/storage32.c +++ b/dlls/ole32/storage32.c @@ -6995,10 +6995,8 @@ static ULONG BlockChainStream_GetHeadOfChain(BlockChainStream* This) This->ownerDirEntry, &chainEntry);
- if (SUCCEEDED(hr)) - { + if (SUCCEEDED(hr) && chainEntry.startingBlock < BLOCK_FIRST_SPECIAL) return chainEntry.startingBlock; - } }
return BLOCK_END_OF_CHAIN; @@ -7520,11 +7518,8 @@ static ULONG SmallBlockChainStream_GetHeadOfChain( This->ownerDirEntry, &chainEntry);
- if (SUCCEEDED(hr)) - { + if (SUCCEEDED(hr) && chainEntry.startingBlock < BLOCK_FIRST_SPECIAL) return chainEntry.startingBlock; - } - }
return BLOCK_END_OF_CHAIN; diff --git a/dlls/ole32/storage32.h b/dlls/ole32/storage32.h index 36cbc9d..9831a27 100644 --- a/dlls/ole32/storage32.h +++ b/dlls/ole32/storage32.h @@ -78,6 +78,7 @@ static const WORD MAX_BIG_BLOCK_SIZE_BITS = 0x000c; static const WORD DEF_SMALL_BLOCK_SIZE_BITS = 0x0006; static const WORD DEF_BIG_BLOCK_SIZE = 0x0200; static const WORD DEF_SMALL_BLOCK_SIZE = 0x0040; +static const ULONG BLOCK_FIRST_SPECIAL = 0xFFFFFFFB; static const ULONG BLOCK_EXTBBDEPOT = 0xFFFFFFFC; static const ULONG BLOCK_SPECIAL = 0xFFFFFFFD; static const ULONG BLOCK_END_OF_CHAIN = 0xFFFFFFFE;