Nikolay Sivov : ole32: Make OleSetClipboard affected by previous OleInitialize() calls.
Module: wine Branch: master Commit: 0eeb042067fde019d02674858cef2241ed8231b8 URL: http://source.winehq.org/git/wine.git/?a=commit;h=0eeb042067fde019d02674858c... Author: Nikolay Sivov <bunglehead(a)gmail.com> Date: Thu Dec 18 23:20:35 2008 +0300 ole32: Make OleSetClipboard affected by previous OleInitialize() calls. --- dlls/ole32/clipboard.c | 9 +++++++++ dlls/ole32/tests/clipboard.c | 2 -- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/dlls/ole32/clipboard.c b/dlls/ole32/clipboard.c index 5320988..762afc7 100644 --- a/dlls/ole32/clipboard.c +++ b/dlls/ole32/clipboard.c @@ -78,6 +78,8 @@ #include "storage32.h" +#include "compobj_private.h" + #define HANDLE_ERROR(err) { hr = err; TRACE("(HRESULT=%x)\n", (HRESULT)err); goto CLEANUP; } WINE_DEFAULT_DEBUG_CHANNEL(ole); @@ -313,6 +315,7 @@ HRESULT WINAPI OleSetClipboard(IDataObject* pDataObj) IEnumFORMATETC* penumFormatetc = NULL; FORMATETC rgelt; BOOL bClipboardOpen = FALSE; + struct oletls *info = COM_CurrentInfo(); /* HGLOBAL hDataObject = 0; OLEClipbrd **ppDataObject; @@ -320,6 +323,12 @@ HRESULT WINAPI OleSetClipboard(IDataObject* pDataObj) TRACE("(%p)\n", pDataObj); + if(!info) + WARN("Could not allocate tls\n"); + else + if(!info->ole_inits) + return CO_E_NOTINITIALIZED; + /* * Make sure we have a clipboard object */ diff --git a/dlls/ole32/tests/clipboard.c b/dlls/ole32/tests/clipboard.c index e714064..7e3809e 100644 --- a/dlls/ole32/tests/clipboard.c +++ b/dlls/ole32/tests/clipboard.c @@ -439,12 +439,10 @@ static void test_set_clipboard(void) return; hr = OleSetClipboard(data1); - todo_wine ok(hr == CO_E_NOTINITIALIZED, "OleSetClipboard should have failed with CO_E_NOTINITIALIZED instead of 0x%08x\n", hr); CoInitialize(NULL); hr = OleSetClipboard(data1); - todo_wine ok(hr == CO_E_NOTINITIALIZED || hr == CLIPBRD_E_CANT_SET, /* win9x */ "OleSetClipboard should have failed with "
participants (1)
-
Alexandre Julliard