Janitorial W->A cleanup objects/metafile.c dlls/gdi/mfdrv/init.c

Dmitry Timoshkov dmitry at baikal.ru
Sun Mar 23 22:47:44 CST 2003


"Tony Lambregts" <tony_lambregts at telusplanet.net> wrote:

> This one was required more that a mop and pail. In the end what I had to do is 
> convert MF_CreateMetaHeaderDisk to unicode.
> 
> One burning question I have at this point is the relative merits of using 
> RtlCreateUnicodeStringFromAsciiz vs MultiByteToWideChar

MultiByteToWideChar uses Rtl* functions internally and using ntdll APIs
directly should give a slightly better performance.

RtlCreateUnicodeStringFromAsciiz also is supposed to hide the internals
of the conversion and help to avoid bugs and typos.

> @@ -62,7 +65,7 @@
>  {
>      DWORD dw1, dw2, dw3;
>      WORD w4;
> -    CHAR filename[0x100];
> +    WCHAR filename[MAX_PATHNAME_LEN];

Please do not increase the buffer size if there is no real need for it.
MAX_PATHNAME_LEN = 1024. It's better though to replace 0x100 by MAX_PATH IMO.

>  } METAHEADERDISK;
>  #include "poppack.h"
>  
> @@ -350,9 +353,9 @@
>          ERR("Not a disk based metafile\n");
>   return NULL;
>      }
> -    mhd = (METAHEADERDISK *)((char *)mh + sizeof(METAHEADER));
> +    mhd = (METAHEADERDISK *)((WCHAR *)mh + sizeof(METAHEADER));

Wrong.

> @@ -377,8 +380,8 @@
>         sizeof(METAHEADER) + sizeof(METAHEADERDISK));
>      mh->mtType = METAFILE_DISK;
>      size = HeapSize( GetProcessHeap(), 0, mh );
> -    mhd = (METAHEADERDISK *)((char *)mh + sizeof(METAHEADER));
> -    strcpy(mhd->filename, filename);
> +    mhd = (METAHEADERDISK *)((WCHAR *)mh + sizeof(METAHEADER));

Wrong again.

-- 
Dmitry.






More information about the wine-devel mailing list