gdi32[2/4]: implement AddFontMemResourceEx (based on a patch of Byeong-Sik Jeon, helps with bug #5865) (resend)

Alexandre Julliard julliard at winehq.org
Thu Sep 13 06:25:38 CDT 2007


"Mikolaj Zalewski" <mikolajz at google.com> writes:

> diff --git a/dlls/gdi32/font.c b/dlls/gdi32/font.c
> index c516736..efc044b 100644
> --- a/dlls/gdi32/font.c
> +++ b/dlls/gdi32/font.c
> @@ -3214,8 +3214,18 @@ BOOL WINAPI RemoveFontResourceW( LPCWSTR
>   */
>  HANDLE WINAPI AddFontMemResourceEx( PVOID pbFont, DWORD cbFont, PVOID pdv, DWORD *pcFonts)
>  {
> -    FIXME("(%p,%08x,%p,%p): stub\n", pbFont, cbFont, pdv, pcFonts);
> -    return NULL;
> +    PVOID pFontCopy = HeapAlloc(GetProcessHeap(), 0, cbFont);
> +    HANDLE ret;
> +
> +    TRACE("Copying %d bytes of data from %p to %p\n", cbFont, pbFont, pFontCopy);
> +    memcpy(pFontCopy, pbFont, cbFont);
> +    ret = WineEngAddFontMemResourceEx(pFontCopy, cbFont, pdv, pcFonts);
> +    if (ret == NULL)
> +    {
> +        TRACE("Font create failed - freeing %p\n", pFontCopy);
> +        HeapFree(GetProcessHeap(), 0, pFontCopy);
> +    }
> +    return ret;
>  }

The memory copy should be done in WineEngAddFontMemResourceEx since
that's where the data is managed.

-- 
Alexandre Julliard
julliard at winehq.org



More information about the wine-devel mailing list