Module: wine Branch: master Commit: 0eeb042067fde019d02674858cef2241ed8231b8 URL: http://source.winehq.org/git/wine.git/?a=commit;h=0eeb042067fde019d02674858c...
Author: Nikolay Sivov bunglehead@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 "