diff options
author | cc_benny <cc_benny> | 2009-12-06 17:15:24 (GMT) |
---|---|---|
committer | cc_benny <cc_benny> | 2009-12-06 17:15:24 (GMT) |
commit | ed9cba261d753fabd85836e5aaf6e6bf15e6d9bc (patch) | |
tree | eca845d697cc3b078f0f24e54d92356a85a40fe1 /macosx/tkMacOSXFont.c | |
parent | 4f22e4e2865a8ef6917cc8a16c3a4041ab2e3b5a (diff) | |
download | tk-ed9cba261d753fabd85836e5aaf6e6bf15e6d9bc.zip tk-ed9cba261d753fabd85836e5aaf6e6bf15e6d9bc.tar.gz tk-ed9cba261d753fabd85836e5aaf6e6bf15e6d9bc.tar.bz2 |
* macosx/tkMacOSXFont.c (GetFontFamilyName): [Bug #2548661]
Merge fix from HEAD (1.44).
Diffstat (limited to 'macosx/tkMacOSXFont.c')
-rw-r--r-- | macosx/tkMacOSXFont.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/macosx/tkMacOSXFont.c b/macosx/tkMacOSXFont.c index 7a7cfc8..09d8782 100644 --- a/macosx/tkMacOSXFont.c +++ b/macosx/tkMacOSXFont.c @@ -35,7 +35,7 @@ * that such fonts can not be used for controls, because controls * definitely require a family id (this assertion needs testing). * - * RCS: @(#) $Id: tkMacOSXFont.c,v 1.37.2.3 2008/08/19 00:19:10 das Exp $ + * RCS: @(#) $Id: tkMacOSXFont.c,v 1.37.2.4 2009/12/06 17:15:25 cc_benny Exp $ */ #include "tkMacOSXPrivate.h" @@ -2128,7 +2128,9 @@ GetFontFamilyName( /* * QuickDraw font names are encoded with the script that the font uses. - * So we determine that encoding and than we reencode the name. + * So we determine that encoding and than we reencode the name. We + * pre-set the encoding with the default value, so we do not need to + * check result codes here. */ encoding = kTextEncodingMacRoman; @@ -2145,12 +2147,20 @@ GetFontFamilyName( * have seen CFStringGetCString() crash with invalid encoding ids. But * than if that happens it would be a bug in * FMGetFontFamilyTextEncoding() or RevertTextEncodingToScriptInfo(). + * Another problem is that users have seen CFStringCreate return null + * (Bug #2548661). This is due to font names with a bad encoding. */ cfString = CFStringCreateWithPascalStringNoCopy( NULL, nativeName, nameencoding, kCFAllocatorNull); - CFStringGetCString( - cfString, name, numBytes, kCFStringEncodingUTF8); + if (cfString == NULL) { + TkMacOSXDbgMsg("CFStringCreate: " + "'%.*s' could not be decoded with encoding %d", + nativeName[0], nativeName+1, (int) nameencoding); + return kTextMalformedInputErr; + } + + CFStringGetCString(cfString, name, numBytes, kCFStringEncodingUTF8); CFRelease(cfString); return noErr; |