Robert Shearman : ole32: Always rewind the stream in
StdGlobalInterfaceTable_GetInterfaceFromGlobal
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Jun 15 07:12:32 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: f2dc25a5f328bc6aafd5776b45f4d233ad2baf46
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=f2dc25a5f328bc6aafd5776b45f4d233ad2baf46
Author: Robert Shearman <rob at codeweavers.com>
Date: Wed Jun 14 13:20:14 2006 +0100
ole32: Always rewind the stream in StdGlobalInterfaceTable_GetInterfaceFromGlobal
as CoUnmarshalInterface may have advanced the stream, even if it failed.
---
dlls/ole32/git.c | 9 +++++----
dlls/ole32/tests/marshal.c | 2 +-
2 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/dlls/ole32/git.c b/dlls/ole32/git.c
index cb36be3..872df65 100644
--- a/dlls/ole32/git.c
+++ b/dlls/ole32/git.c
@@ -298,16 +298,17 @@ StdGlobalInterfaceTable_GetInterfaceFrom
/* unmarshal the interface */
hres = CoUnmarshalInterface(entry->stream, riid, ppv);
- if (hres) {
- WARN("Failed to unmarshal stream\n");
- return hres;
- }
/* rewind stream, in case it's used again */
move.u.LowPart = 0;
move.u.HighPart = 0;
IStream_Seek(entry->stream, move, STREAM_SEEK_SET, NULL);
+ if (hres) {
+ WARN("Failed to unmarshal stream\n");
+ return hres;
+ }
+
/* addref it */
lpUnk = *ppv;
IUnknown_AddRef(lpUnk);
diff --git a/dlls/ole32/tests/marshal.c b/dlls/ole32/tests/marshal.c
index 32e2d93..a1be2c3 100644
--- a/dlls/ole32/tests/marshal.c
+++ b/dlls/ole32/tests/marshal.c
@@ -1978,7 +1978,7 @@ static DWORD CALLBACK get_global_interfa
CoInitialize(NULL);
hr = IGlobalInterfaceTable_GetInterfaceFromGlobal(params->git, params->cookie, &IID_IClassFactory, (void **)&cf);
- todo_wine ok_ole_success(hr, IGlobalInterfaceTable_GetInterfaceFromGlobal);
+ ok_ole_success(hr, IGlobalInterfaceTable_GetInterfaceFromGlobal);
CoUninitialize();
return hr;
More information about the wine-cvs
mailing list