Re: gdi32[2/4]: implement AddFontMemResourceEx (based on a patch of Byeong-Sik Jeon, helps with bug #5865) (resend)
"Mikolaj Zalewski" <mikolajz(a)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(a)winehq.org
participants (1)
-
Alexandre Julliard