Commit c7e860d4 authored by Rein Klazes's avatar Rein Klazes Committed by Alexandre Julliard

Make WineEngGetFontData always return the used byte count.

parent 724981bf
...@@ -3692,9 +3692,15 @@ DWORD WineEngGetFontData(GdiFont font, DWORD table, DWORD offset, LPVOID buf, ...@@ -3692,9 +3692,15 @@ DWORD WineEngGetFontData(GdiFont font, DWORD table, DWORD offset, LPVOID buf,
} }
/* If the FT_Load_Sfnt_Table function is there we'll use it */ /* If the FT_Load_Sfnt_Table function is there we'll use it */
if(pFT_Load_Sfnt_Table) if(pFT_Load_Sfnt_Table) {
/* make sure value of len is the value freetype says it needs */
if( buf && len) {
DWORD needed = 0;
err = pFT_Load_Sfnt_Table(ft_face, table, offset, NULL, &needed);
if( !err && needed < len) len = needed;
}
err = pFT_Load_Sfnt_Table(ft_face, table, offset, buf, &len); err = pFT_Load_Sfnt_Table(ft_face, table, offset, buf, &len);
else { /* Do it the hard way */ } else { /* Do it the hard way */
TT_Face tt_face = (TT_Face) ft_face; TT_Face tt_face = (TT_Face) ft_face;
SFNT_Interface *sfnt; SFNT_Interface *sfnt;
if (FT_Version.major==2 && FT_Version.minor==0) if (FT_Version.major==2 && FT_Version.minor==0)
...@@ -3707,6 +3713,12 @@ DWORD WineEngGetFontData(GdiFont font, DWORD table, DWORD offset, LPVOID buf, ...@@ -3707,6 +3713,12 @@ DWORD WineEngGetFontData(GdiFont font, DWORD table, DWORD offset, LPVOID buf,
/* A field was added in the middle of the structure in 2.1.x */ /* A field was added in the middle of the structure in 2.1.x */
sfnt = *(SFNT_Interface**)((char*)tt_face + 532); sfnt = *(SFNT_Interface**)((char*)tt_face + 532);
} }
/* make sure value of len is the value freetype says it needs */
if( buf && len) {
DWORD needed = 0;
err = sfnt->load_any(tt_face, table, offset, NULL, &needed);
if( !err && needed < len) len = needed;
}
err = sfnt->load_any(tt_face, table, offset, buf, &len); err = sfnt->load_any(tt_face, table, offset, buf, &len);
} }
if(err) { if(err) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment