Dan Hipschman <[EMAIL PROTECTED]> writes: > INT WINAPI GetTextFaceA( HDC hdc, INT count, LPSTR name ) > { > - INT res = GetTextFaceW(hdc, 0, NULL); > - LPWSTR nameW = HeapAlloc( GetProcessHeap(), 0, res * 2 ); > - GetTextFaceW( hdc, res, nameW ); > - > if (name) > { > - if (count && !WideCharToMultiByte( CP_ACP, 0, nameW, -1, name, > count, NULL, NULL)) > + LPWSTR nameW = HeapAlloc( GetProcessHeap(), 0, count * sizeof > nameW[0] ); > + INT res = GetTextFaceW( hdc, count, nameW ); > + if (count && res) > + { > + WideCharToMultiByte( CP_ACP, 0, nameW, -1, name, count, NULL, > NULL); > name[count-1] = 0; > - res = strlen(name); > + } > + HeapFree( GetProcessHeap(), 0, nameW ); > + /* GetTextFaceA does NOT include the nul byte in the return count. > */ > + return res ? res - 1 : 0; > } > else > - res = WideCharToMultiByte( CP_ACP, 0, nameW, -1, NULL, 0, NULL, > NULL); > - HeapFree( GetProcessHeap(), 0, nameW ); > - return res; > + return GetTextFaceW(hdc, 0, NULL); > }
This is wrong, you can't return the W length from the A function. -- Alexandre Julliard [EMAIL PROTECTED]