summaryrefslogtreecommitdiff
path: root/src/drivers/Quartz
diff options
context:
space:
mode:
authorManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2022-06-25 20:00:17 +0200
committerManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2022-06-25 20:00:17 +0200
commitfeb0d918fb8ead02db12a3031b4d46a970a935ef (patch)
tree930823c70dc31eefc39d428eb23d81e94fa62266 /src/drivers/Quartz
parentfb7469c85c86a1a5dc62f5feaf540dbd7307600e (diff)
Remove arbitrary maximum length of font name.
Diffstat (limited to 'src/drivers/Quartz')
-rw-r--r--src/drivers/Quartz/Fl_Quartz_Graphics_Driver_font.cxx9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_font.cxx b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_font.cxx
index f34d36d54..ce2a7e253 100644
--- a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_font.cxx
+++ b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_font.cxx
@@ -679,9 +679,12 @@ Fl_Font Fl_Quartz_Graphics_Driver::ADD_SUFFIX(set_fonts, _CoreText)(const char*
CTFontRef font = CTFontCreateWithFontDescriptor(fdesc, 0., NULL);
CFStringRef cfname = CTFontCopyPostScriptName(font);
CFRelease(font);
- static char fname[200];
- CFStringGetCString(cfname, fname, sizeof(fname), kCFStringEncodingUTF8);
- tabfontnames[i] = fl_strdup(fname); // never free'ed
+ CFDataRef cfdata = CFStringCreateExternalRepresentation(NULL, cfname, kCFStringEncodingUTF8, '?');
+ CFIndex l = CFDataGetLength(cfdata);
+ tabfontnames[i] = (char*)malloc(l+1); // never free'ed
+ memcpy(tabfontnames[i], CFDataGetBytePtr(cfdata), l);
+ tabfontnames[i][l] = 0;
+ CFRelease(cfdata);
CFRelease(cfname);
}
CFRelease(arrayref);