Bruno Jesus : ole32: Make sure StgIsStorageILockBytes tests real data.
Alexandre Julliard
julliard at winehq.org
Mon Apr 16 13:35:46 CDT 2012
Module: wine
Branch: master
Commit: 2cd2628c7ba43840d26f66070b08244eda181f06
URL: http://source.winehq.org/git/wine.git/?a=commit;h=2cd2628c7ba43840d26f66070b08244eda181f06
Author: Bruno Jesus <00cpxxx at 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 );
More information about the wine-cvs
mailing list