Rob Shearman : ole32: Handle SetClipboardData failing in OLE clipboard functions.

Alexandre Julliard julliard at winehq.org
Wed Dec 30 10:18:14 CST 2009


Module: wine
Branch: master
Commit: 88219db8ab809de8ebc031a872f42b4fee7d026e
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=88219db8ab809de8ebc031a872f42b4fee7d026e

Author: Rob Shearman <robertshearman at gmail.com>
Date:   Tue Dec 29 19:00:53 2009 +0000

ole32: Handle SetClipboardData failing in OLE clipboard functions.

---

 dlls/ole32/clipboard.c |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/dlls/ole32/clipboard.c b/dlls/ole32/clipboard.c
index 51e750a..2afc77e 100644
--- a/dlls/ole32/clipboard.c
+++ b/dlls/ole32/clipboard.c
@@ -1701,7 +1701,11 @@ static HRESULT set_clipboard_formats(ole_clipbrd *clipbrd, IDataObject *data)
             td_offs_to_ptr(clipbrd->cached_enum, (DWORD_PTR)clipbrd->cached_enum->entries[idx].fmtetc.ptd);
 
     GlobalUnlock(priv_data_handle);
-    SetClipboardData(ole_private_data_clipboard_format, priv_data_handle);
+    if(!SetClipboardData(ole_private_data_clipboard_format, priv_data_handle))
+    {
+        GlobalFree(priv_data_handle);
+        return CLIPBRD_E_CANT_SET;
+    }
 
     return S_OK;
 }
@@ -1759,7 +1763,11 @@ static HRESULT expose_marshalled_dataobject(ole_clipbrd *clipbrd, IDataObject *d
 
     if(!h) return E_OUTOFMEMORY;
 
-    SetClipboardData(wine_marshal_clipboard_format, h);
+    if(!SetClipboardData(wine_marshal_clipboard_format, h))
+    {
+        GlobalFree(h);
+        return CLIPBRD_E_CANT_SET;
+    }
     return S_OK;
 }
 




More information about the wine-cvs mailing list