diff options
Diffstat (limited to 'gdk/win32/gdkfont.c')
-rw-r--r-- | gdk/win32/gdkfont.c | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/gdk/win32/gdkfont.c b/gdk/win32/gdkfont.c index f6b768bac..3cee42da8 100644 --- a/gdk/win32/gdkfont.c +++ b/gdk/win32/gdkfont.c @@ -789,12 +789,11 @@ gdk_font_load (const gchar *font_name) font->ascent = textmetric.tmAscent; font->descent = textmetric.tmDescent; - GDK_NOTE (MISC, g_print ("... = %#x charset %s codepage %d (max %d bytes) " + GDK_NOTE (MISC, g_print ("... = %#x charset %s codepage %d " "asc %d desc %d\n", singlefont->xfont, charset_name (singlefont->charset), singlefont->codepage, - singlefont->cpinfo.MaxCharSize, font->ascent, font->descent)); gdk_font_hash_insert (GDK_FONT_FONTSET, font, font_name); @@ -851,10 +850,16 @@ gdk_fontset_load (gchar *fontset_name) singlefont = gdk_font_load_internal (s); if (singlefont) { + GDK_NOTE + (MISC, g_print ("... = %#x charset %s codepage %d\n", + singlefont->xfont, + charset_name (singlefont->charset), + singlefont->codepage)); private->fonts = g_slist_append (private->fonts, singlefont); oldfont = SelectObject (gdk_DC, singlefont->xfont); GetTextMetrics (gdk_DC, &textmetric); - singlefont->charset = GetTextCharsetInfo (gdk_DC, &singlefont->fs, 0); + singlefont->charset = + GetTextCharsetInfo (gdk_DC, &singlefont->fs, 0); SelectObject (gdk_DC, oldfont); font->ascent = MAX (font->ascent, textmetric.tmAscent); font->descent = MAX (font->descent, textmetric.tmDescent); @@ -932,6 +937,7 @@ gdk_font_unref (GdkFont *font) list = list->next; } + g_slist_free (private->fonts); break; default: @@ -1130,6 +1136,8 @@ gdk_wchar_text_handle (GdkFont *font, end = wcp + wclen; private = (GdkFontPrivate *) font; + g_assert (private->ref_count > 0); + while (wcp < end) { /* Split Unicode string into pieces of the same class */ @@ -1175,6 +1183,9 @@ gdk_text_size_handler (GdkWin32SingleFont *singlefont, HGDIOBJ oldfont; gdk_text_size_arg *arg = (gdk_text_size_arg *) argp; + if (!singlefont) + return; + if ((oldfont = SelectObject (gdk_DC, singlefont->xfont)) == NULL) { g_warning ("gdk_text_size_handler: SelectObject failed"); @@ -1208,12 +1219,9 @@ gdk_text_size (GdkFont *font, wcstr = g_new (wchar_t, text_length); if ((wlen = gdk_nmbstowchar_ts (wcstr, text, text_length, text_length)) == -1) - { - g_warning ("gdk_text_size: gdk_nmbstowchar_ts failed"); - return FALSE; - } - - gdk_wchar_text_handle (font, wcstr, wlen, gdk_text_size_handler, arg); + g_warning ("gdk_text_size: gdk_nmbstowchar_ts failed"); + else + gdk_wchar_text_handle (font, wcstr, wlen, gdk_text_size_handler, arg); g_free (wcstr); @@ -1347,6 +1355,8 @@ gdk_text_extents (GdkFont *font, else gdk_wchar_text_handle (font, wcstr, wlen, gdk_text_size_handler, &arg); + g_free (wcstr); + /* XXX This is quite bogus */ if (lbearing) *lbearing = 0; |