[2/3] ole32: Remove unsupported interface REFIID from storage stream QueryInterface

Nikolay Sivov nsivov at codeweavers.com
Wed Jul 18 04:55:09 CDT 2012


These interfaces were falsely advertised as supported without any 
vtables at all

-------------- next part --------------
>From 39cac4a3e936d0f41e73e2a861ebf77b8d2dd17d Mon Sep 17 00:00:00 2001
From: Nikolay Sivov <nsivov at codeweavers.com>
Date: Wed, 18 Jul 2012 10:18:24 +0400
Subject: [PATCH 2/3] Remove unsupported interface REFIID from storage stream QueryInterface

---
 dlls/ole32/stg_stream.c      |    2 --
 dlls/ole32/tests/storage32.c |    8 ++++++++
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/dlls/ole32/stg_stream.c b/dlls/ole32/stg_stream.c
index 1471162..e9fc0c0 100644
--- a/dlls/ole32/stg_stream.c
+++ b/dlls/ole32/stg_stream.c
@@ -94,8 +94,6 @@ static HRESULT WINAPI StgStreamImpl_QueryInterface(
   *ppvObject = 0;
 
   if (IsEqualIID(&IID_IUnknown, riid) ||
-      IsEqualIID(&IID_IPersist, riid) ||
-      IsEqualIID(&IID_IPersistStream, riid) ||
       IsEqualIID(&IID_ISequentialStream, riid) ||
       IsEqualIID(&IID_IStream, riid))
   {
diff --git a/dlls/ole32/tests/storage32.c b/dlls/ole32/tests/storage32.c
index c79b5d1..ac3fc3f 100644
--- a/dlls/ole32/tests/storage32.c
+++ b/dlls/ole32/tests/storage32.c
@@ -315,6 +315,7 @@ static void test_storage_stream(void)
     LARGE_INTEGER pos;
     ULARGE_INTEGER p;
     unsigned char buffer[0x100];
+    IUnknown *unk;
 
     DeleteFileA(filenameA);
 
@@ -347,6 +348,13 @@ static void test_storage_stream(void)
     /* now really create a stream and delete it */
     r = IStorage_CreateStream(stg, stmname, STGM_SHARE_EXCLUSIVE | STGM_READWRITE, 0, 0, &stm );
     ok(r==S_OK, "IStorage->CreateStream failed\n");
+
+    /* test for support interfaces */
+    r = IStream_QueryInterface(stm, &IID_IPersist, (void**)&unk);
+    ok(r==E_NOINTERFACE, "got 0x%08x\n", r);
+    r = IStream_QueryInterface(stm, &IID_IPersistStream, (void**)&unk);
+    ok(r==E_NOINTERFACE, "got 0x%08x\n", r);
+
     r = IStream_Release(stm);
     ok(r == 0, "wrong ref count\n");
     r = IStorage_CreateStream(stg, stmname, STGM_SHARE_EXCLUSIVE | STGM_READWRITE, 0, 0, &stm );
-- 
1.5.6.5




More information about the wine-patches mailing list