Patch for OLEClipbrd_IDataObject_GetData
Sander van Leeuwen
sandervl at xs4all.nl
Fri Feb 15 07:43:52 CST 2002
Changelog:
Must make a copy of global handle returned by GetClipboardData; it is not valid after we call CloseClipboard
Application is responsible for freeing the memory (fixes copy/paste in mail body in Forte Agent)
Index: clipboard.c
===================================================================
RCS file: /home/wine/wine/dlls/ole32/clipboard.c,v
retrieving revision 1.19
diff -u -r1.19 clipboard.c
--- clipboard.c 2001/07/29 20:19:51 1.19
+++ clipboard.c 2002/02/15 11:44:20
@@ -1200,6 +1200,7 @@
HANDLE hData = 0;
BOOL bClipboardOpen = FALSE;
HRESULT hr = S_OK;
+ LPVOID src;
/*
* Declare "This" pointer
@@ -1238,6 +1239,25 @@
HANDLE_ERROR( CLIPBRD_E_CANT_OPEN );
hData = GetClipboardData(pformatetcIn->cfFormat);
+
+ /* Must make a copy of global handle returned by GetClipboardData; it
+ * is not valid after we call CloseClipboard
+ * Application is responsible for freeing the memory (Forte Agent does this)
+ */
+ src = GlobalLock(hData);
+ if(src) {
+ LPVOID dest;
+ ULONG size;
+ HANDLE hDest;
+
+ size = GlobalSize(hData);
+ hDest = GlobalAlloc(GHND, size);
+ dest = GlobalLock(hDest);
+ memcpy(dest, src, size);
+ GlobalUnlock(hDest);
+ GlobalUnlock(hData);
+ hData = hDest;
+ }
/*
* Return the clipboard data in the storage medium structure
More information about the wine-patches
mailing list