Module: wine Branch: master Commit: 2cd2628c7ba43840d26f66070b08244eda181f06 URL: http://source.winehq.org/git/wine.git/?a=commit;h=2cd2628c7ba43840d26f66070b...
Author: Bruno Jesus 00cpxxx@gmail.com Date: Sun Apr 15 05:07:11 2012 -0300
ole32: Make sure StgIsStorageILockBytes tests real data.
---
dlls/ole32/storage32.c | 7 ++++--- dlls/ole32/tests/storage32.c | 6 ++++++ 2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/dlls/ole32/storage32.c b/dlls/ole32/storage32.c index f279ee5..f233b61 100644 --- a/dlls/ole32/storage32.c +++ b/dlls/ole32/storage32.c @@ -7846,15 +7846,16 @@ HRESULT WINAPI StgSetTimes(OLECHAR const *str, FILETIME const *pctime, */ HRESULT WINAPI StgIsStorageILockBytes(ILockBytes *plkbyt) { - BYTE sig[8]; + BYTE sig[sizeof(STORAGE_magic)]; ULARGE_INTEGER offset; + ULONG read = 0;
offset.u.HighPart = 0; offset.u.LowPart = 0;
- ILockBytes_ReadAt(plkbyt, offset, sig, sizeof(sig), NULL); + ILockBytes_ReadAt(plkbyt, offset, sig, sizeof(sig), &read);
- if (memcmp(sig, STORAGE_magic, sizeof(STORAGE_magic)) == 0) + if (read == sizeof(sig) && memcmp(sig, STORAGE_magic, sizeof(sig)) == 0) return S_OK;
return S_FALSE; diff --git a/dlls/ole32/tests/storage32.c b/dlls/ole32/tests/storage32.c index b465269..bc0cc25 100644 --- a/dlls/ole32/tests/storage32.c +++ b/dlls/ole32/tests/storage32.c @@ -66,6 +66,9 @@ static void test_hglobal_storage_stat(void) r = CreateILockBytesOnHGlobal( NULL, TRUE, &ilb ); ok( r == S_OK, "CreateILockBytesOnHGlobal failed\n");
+ r = StgIsStorageILockBytes( ilb ); + ok( r == S_FALSE, "StgIsStorageILockBytes should have failed\n"); + mode = STGM_CREATE|STGM_SHARE_EXCLUSIVE|STGM_READWRITE;/*0x1012*/ r = StgCreateDocfileOnILockBytes( ilb, mode, 0, &stg ); ok( r == S_OK, "StgCreateDocfileOnILockBytes failed\n"); @@ -73,6 +76,9 @@ static void test_hglobal_storage_stat(void) r = WriteClassStg( stg, &test_stg_cls ); ok( r == S_OK, "WriteClassStg failed\n");
+ r = StgIsStorageILockBytes( ilb ); + ok( r == S_OK, "StgIsStorageILockBytes failed\n"); + memset( &stat, 0, sizeof stat ); r = IStorage_Stat( stg, &stat, 0 );