From 11c38c3e4147e71cebd50718d2bc3f2b7e4d1ea6 Mon Sep 17 00:00:00 2001 From: ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> Date: Tue, 6 Jun 2023 08:22:32 +0200 Subject: [PATCH] Fix "Fl::get_font_name() with Pango is inconsistent"-cont'd (#732) --- src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx | 5 ++++- src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx b/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx index fcc83dc5b..c9e2c37f8 100644 --- a/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx +++ b/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx @@ -1075,7 +1075,10 @@ Fl_Font Fl_Cairo_Graphics_Driver::set_fonts(const char* /*pattern_name*/) // Force LANG=C to prevent pango_font_face_get_face_name() below from returning // translated versions of Bold, Italic, etc… (see issue #732). // Unfortunately, using setlocale() doesn't do the job. - saved_lang = strdup(saved_lang); + char *p = saved_lang; + saved_lang = (char*)malloc(strlen(p) + 6); + memcpy(saved_lang, "LANG=", 5); + strcpy(saved_lang + 5, p); fl_putenv(Clang); } else saved_lang = NULL; static PangoFontMap *pfmap_ = pango_cairo_font_map_get_default(); // 1.10 diff --git a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx index e9b686205..500a48d0d 100644 --- a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx +++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx @@ -1398,7 +1398,10 @@ Fl_Font Fl_Xlib_Graphics_Driver::set_fonts(const char* pattern_name) // Force LANG=C to prevent pango_font_face_get_face_name() below from returning // translated versions of Bold, Italic, etc… (see issue #732). // Unfortunately, using setlocale() doesn't do the job. - saved_lang = strdup(saved_lang); + char *p = saved_lang; + saved_lang = (char*)malloc(strlen(p) + 6); + memcpy(saved_lang, "LANG=", 5); + strcpy(saved_lang + 5, p); fl_putenv(Clang); } else saved_lang = NULL; for (int fam = 0; fam < n_families; fam++) {