[ros-diffs] [janderwald] 33610: - remove unneeded cast in GetClipboardData - use WideCharToMultiByte instead of RtlUnicodeStringToAnsiString - fix memory leak in GetClipboardFormatNameA - ReactOS now passes all user32_winetest.exe clipboard test (previously 2 failures)

janderwald at svn.reactos.org janderwald at svn.reactos.org
Tue May 20 15:42:18 CEST 2008


Author: janderwald
Date: Tue May 20 08:42:17 2008
New Revision: 33610

URL: http://svn.reactos.org/svn/reactos?rev=33610&view=rev
Log:
- remove unneeded cast in GetClipboardData
- use WideCharToMultiByte instead of RtlUnicodeStringToAnsiString
- fix memory leak in GetClipboardFormatNameA
- ReactOS now passes all user32_winetest.exe clipboard test (previously 2 failures)

Modified:
    trunk/reactos/dll/win32/user32/windows/clipboard.c

Modified: trunk/reactos/dll/win32/user32/windows/clipboard.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/user32/windows/clipboard.c?rev=33610&r1=33609&r2=33610&view=diff
==============================================================================
--- trunk/reactos/dll/win32/user32/windows/clipboard.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/user32/windows/clipboard.c [iso-8859-1] Tue May 20 08:42:17 2008
@@ -93,7 +93,7 @@
             hGlobal = GlobalAlloc(GMEM_DDESHARE | GMEM_MOVEABLE, size);
             pGlobal = GlobalLock(hGlobal);
 
-            size = (DWORD)NtUserGetClipboardData(uFormat, (DWORD)pGlobal);
+            size = (DWORD)NtUserGetClipboardData(uFormat, pGlobal);
 
             GlobalUnlock(hGlobal);
         }
@@ -114,12 +114,7 @@
 {
     LPWSTR lpBuffer;
     UNICODE_STRING FormatName;
-    ANSI_STRING FormatNameA;
     INT Length;
-    ANSI_STRING ClassName;
-
-    ClassName.MaximumLength = cchMaxCount;
-    ClassName.Buffer = lpszFormatName;
 
     lpBuffer = RtlAllocateHeap(RtlGetProcessHeap(), 0, cchMaxCount * sizeof(WCHAR));
     if (!lpBuffer)
@@ -137,16 +132,16 @@
 
    if (Length != 0)
    {
-       FormatNameA.Length = 0;
-       FormatNameA.MaximumLength = cchMaxCount;
-       FormatNameA.Buffer = lpszFormatName;
-
-       RtlUnicodeStringToAnsiString(&FormatNameA, &FormatName, FALSE);
-
-       return FormatNameA.Length;
+       if (!WideCharToMultiByte(CP_ACP, 0, lpBuffer, Length, lpszFormatName, cchMaxCount, NULL, NULL))
+       {
+          /* clear result string */
+          lpszFormatName[0] = '\0';
+          Length = 0;
+       }
    }
 
-   return 0;
+   RtlFreeHeap(RtlGetProcessHeap(), 0, lpBuffer);
+   return Length;
 }
 
 /*



More information about the Ros-diffs mailing list