From feb0d918fb8ead02db12a3031b4d46a970a935ef Mon Sep 17 00:00:00 2001 From: ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> Date: Sat, 25 Jun 2022 20:00:17 +0200 Subject: Remove arbitrary maximum length of font name. --- src/drivers/Quartz/Fl_Quartz_Graphics_Driver_font.cxx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/drivers/Quartz') 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); -- cgit v1.2.3