[User32] Fix Clipboard Meta Test Results
authorjimtabor <james.tabor@reactos.org>
Sat, 1 Jun 2019 03:59:29 +0000 (22:59 -0500)
committerjimtabor <james.tabor@reactos.org>
Sat, 1 Jun 2019 03:59:29 +0000 (22:59 -0500)
Fix meta data handle returns.

win32ss/user/user32/windows/clipboard.c

index 95fb878..bb51ce7 100644 (file)
@@ -303,7 +303,7 @@ SetClipboardData(UINT uFormat, HANDLE hMem)
     DWORD dwSize;
     HANDLE hGlobal;
     LPVOID pMem;
-    HANDLE hRet = NULL;
+    HANDLE hRet = NULL, hTemp;
     SETCLIPBDATA scd = {FALSE, FALSE};
 
     /* Check if this is a delayed rendering */
@@ -318,13 +318,15 @@ SetClipboardData(UINT uFormat, HANDLE hMem)
     /* Meta files are probably checked for validity */
     else if (uFormat == CF_DSPMETAFILEPICT || uFormat == CF_METAFILEPICT )
     {
-        hMem = GdiConvertMetaFilePict( hMem );
-        hRet = NtUserSetClipboardData(uFormat, hMem, &scd);
+        hTemp = GdiConvertMetaFilePict( hMem );
+        hRet = NtUserSetClipboardData(uFormat, hTemp, &scd); // Note : LOL, it returns a BOOL not a HANDLE!!!!
+        if (hRet == hTemp) hRet = hMem;                      // If successful "TRUE", return the original handle.
     }
     else if (uFormat == CF_DSPENHMETAFILE || uFormat == CF_ENHMETAFILE)
     {
-        hMem = GdiConvertEnhMetaFile( hMem );
-        hRet = NtUserSetClipboardData(uFormat, hMem, &scd);
+        hTemp = GdiConvertEnhMetaFile( hMem );
+        hRet = NtUserSetClipboardData(uFormat, hTemp, &scd);
+        if (hRet == hTemp) hRet = hMem;
     }
     else
     {