[Janitorial] Remove CopyMetaFileW->A call

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Indentation in CopyMetaFileW is a bit inconsistent (there are some tabs
which I left since I didn't touch those lines). Should I redo my patch
to get rid of them (adds some noise to the patch), keep them in a
separate patch (limited to this very function) or leave it as is?

Also, should I change MF_CreateMetaHeaderDisk to accept a LPCWSTR, even
though it then needs to convert it back to Ascii, or is the proposed way
sufficient?

Changelog:
Removed a W->A cross-call (CopyMetaFileW->CopyMetaFileA).

Vincent
Index: objects/metafile.c
===================================================================
RCS file: /home/wine/wine/objects/metafile.c,v
retrieving revision 1.59
diff -u -r1.59 metafile.c
--- objects/metafile.c	8 Dec 2003 21:58:55 -0000	1.59
+++ objects/metafile.c	13 Jan 2004 03:22:31 -0000
@@ -52,6 +52,8 @@
 #include "wine/wingdi16.h"
 #include "bitmap.h"
 #include "wownt32.h"
+#include "winreg.h"
+#include "winternl.h"
 #include "wine/debug.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(metafile);
@@ -418,7 +420,7 @@
 
 
 /******************************************************************
- *         CopyMetaFileA   (GDI32.@)
+ *         CopyMetaFileW   (GDI32.@)
  *
  *  Copies the metafile corresponding to hSrcMetaFile to either
  *  a disk file, if a filename is given, or to a new memory based
@@ -432,15 +434,15 @@
  *
  *  Copying to disk returns NULL even if successful.
  */
-HMETAFILE WINAPI CopyMetaFileA(
+HMETAFILE WINAPI CopyMetaFileW(
 		   HMETAFILE hSrcMetaFile, /* [in] handle of metafile to copy */
-		   LPCSTR lpFilename       /* [in] filename if copying to a file */
+		   LPCWSTR lpFilename      /* [in] filename if copying to a file */
 ) {
     METAHEADER *mh = MF_GetMetaHeader( hSrcMetaFile );
     METAHEADER *mh2 = NULL;
     HANDLE hFile;
 
-    TRACE("(%p,%s)\n", hSrcMetaFile, lpFilename);
+    TRACE("(%p,%s)\n", hSrcMetaFile, debugstr_w(lpFilename));
 
     if(!mh) return 0;
 
@@ -452,14 +454,20 @@
     }
 
     if(lpFilename) {         /* disk based metafile */
-        if((hFile = CreateFileA(lpFilename, GENERIC_WRITE, 0, NULL,
+        DWORD len;
+        LPSTR lpFilenameA;
+        if((hFile = CreateFileW(lpFilename, GENERIC_WRITE, 0, NULL,
 				CREATE_ALWAYS, 0, 0)) == INVALID_HANDLE_VALUE) {
 	    HeapFree( GetProcessHeap(), 0, mh2 );
 	    return 0;
 	}
 	WriteFile(hFile, mh2, mh2->mtSize * 2, NULL, NULL);
 	CloseHandle(hFile);
-	mh2 = MF_CreateMetaHeaderDisk(mh2, lpFilename);
+        len = WideCharToMultiByte(CP_ACP, 0, lpFilename, -1, NULL, 0, NULL, NULL);
+        lpFilenameA = HeapAlloc(GetProcessHeap(), 0, len);
+        WideCharToMultiByte(CP_ACP, 0, lpFilename, -1, lpFilenameA, len, NULL, NULL);
+        mh2 = MF_CreateMetaHeaderDisk(mh2, lpFilenameA);
+        HeapFree(GetProcessHeap(), 0, lpFilenameA);
     }
 
     return MF_Create_HMETAFILE( mh2 );
@@ -467,21 +475,21 @@
 
 
 /******************************************************************
- *         CopyMetaFileW   (GDI32.@)
+ *         CopyMetaFileA   (GDI32.@)
  */
-HMETAFILE WINAPI CopyMetaFileW( HMETAFILE hSrcMetaFile,
-                                    LPCWSTR lpFilename )
+HMETAFILE WINAPI CopyMetaFileA( HMETAFILE hSrcMetaFile,
+                                    LPCSTR lpFilename )
 {
+    UNICODE_STRING lpFilenameW;
     HMETAFILE ret = 0;
-    DWORD len = WideCharToMultiByte( CP_ACP, 0, lpFilename, -1, NULL, 0, NULL, NULL );
-    LPSTR p = HeapAlloc( GetProcessHeap(), 0, len );
 
-    if (p)
-    {
-        WideCharToMultiByte( CP_ACP, 0, lpFilename, -1, p, len, NULL, NULL );
-        ret = CopyMetaFileA( hSrcMetaFile, p );
-        HeapFree( GetProcessHeap(), 0, p );
+    if (lpFilename) RtlCreateUnicodeStringFromAsciiz(&lpFilenameW, lpFilename);
+    else lpFilenameW.Buffer = NULL;
+
+    if (lpFilenameW.Buffer) {
+        ret = CopyMetaFileW( hSrcMetaFile, lpFilenameW.Buffer );
     }
+    RtlFreeUnicodeString(&lpFilenameW);
     return ret;
 }
 

[Index of Archives]     [Gimp for Windows]     [Red Hat]     [Samba]     [Yosemite Camping]     [Graphics Cards]     [Wine Home]

  Powered by Linux