X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8a15e8ba7aa7800427ac4118f434e827f33dd73a..a0845d45830eb22769107a61a6cb3485fa21922b:/src/unix/fontutil.cpp?ds=sidebyside diff --git a/src/unix/fontutil.cpp b/src/unix/fontutil.cpp index bcabccd4b0..f58ac65107 100644 --- a/src/unix/fontutil.cpp +++ b/src/unix/fontutil.cpp @@ -139,17 +139,24 @@ wxString wxNativeFontInfo::GetFaceName() const wxFontFamily wxNativeFontInfo::GetFamily() const { wxFontFamily ret = wxFONTFAMILY_DEFAULT; - char *family_text = g_ascii_strdown( pango_font_description_get_family( description ), -1 ); + // note: not passing -1 as the 2nd parameter to g_ascii_strdown to work + // around a bug in the 64-bit glib shipped with solaris 10, -1 causes it + // to try to allocate 2^32 bytes. + const char *family_name = pango_font_description_get_family( description ); + char *family_text = g_ascii_strdown( family_name, family_name ? strlen( family_name ) : 0 ); // Check for some common fonts, to salvage what we can from the current win32 centric wxFont API: if (strncmp( family_text, "monospace", 9 ) == 0) ret = wxFONTFAMILY_TELETYPE; // begins with "Monospace" else if (strncmp( family_text, "courier", 7 ) == 0) ret = wxFONTFAMILY_TELETYPE; // begins with "Courier" -#ifdef HAVE_PANGO_FONT_FAMILY_IS_MONOSPACE +#if defined(__WXGTK24__) || defined(HAVE_PANGO_FONT_FAMILY_IS_MONOSPACE) else +#ifdef __WXGTK24__ + if (!gtk_check_version(2,4,0)) +#endif { PangoFontFamily **families; - PangoFontFamily *family; + PangoFontFamily *family = NULL; int n_families; pango_context_list_families( #ifdef __WXGTK20__ @@ -170,15 +177,17 @@ wxFontFamily wxNativeFontInfo::GetFamily() const g_free(families); - wxASSERT_MSG( family, wxT("wxNativeFontInfo::GetFamily() - No appropriate PangoFontFamily found for ::description") ); + // Some gtk+ systems might query for a non-existing font from wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT) + // on initialization, don't assert until wxSystemSettings::GetFont is checked for this - MR + // wxASSERT_MSG( family, wxT("wxNativeFontInfo::GetFamily() - No appropriate PangoFontFamily found for ::description") ); //BCI: Cache the wxFontFamily inside the class. Validate cache with //BCI: g_ascii_strcasecmp(pango_font_description_get_family(description), pango_font_family_get_name(family)) == 0 - if (pango_font_family_is_monospace( family )) + if (family != NULL && pango_font_family_is_monospace( family )) ret = wxFONTFAMILY_TELETYPE; // is deemed a monospace font by pango } -#endif // pango_font_family_is_monospace +#endif // gtk24 || HAVE_PANGO_FONT_FAMILY_IS_MONOSPACE if (ret == wxFONTFAMILY_DEFAULT) {