--- rxvt-unicode/src/rxvtfont.C 2010/12/30 01:13:24 1.170 +++ rxvt-unicode/src/rxvtfont.C 2011/01/10 10:36:16 1.174 @@ -720,12 +720,12 @@ if (!f) return false; - char *new_name = get_property (f, XA_FONT, name); + char *new_name = get_property (f, XA_FONT, 0); if (new_name) set_name (new_name); else - rxvt_warn ("font '%s' has no FONT property, continuing without.", name); + rxvt_warn ("font '%s' has no FONT property, continuing without.\n", name); XFreeFont (disp, f); f = 0; @@ -866,7 +866,8 @@ if (cs == CS_UNKNOWN) { - const char *charset = get_property (f, XA_FONT, 0); + char *value = get_property (f, XA_FONT, 0); + const char *charset = value; if (!charset) charset = name; @@ -879,6 +880,8 @@ cs = codeset_from_name (charset); if (cs == CS_UNKNOWN) rxvt_warn ("%s: cannot deduce encoding from font name property \"%s\", ignoring font.\n", name, charset); + + free (value); } if (cs == CS_UNKNOWN) @@ -1217,10 +1220,12 @@ for (;;) { - f = XftFontOpenPattern (disp, FcPatternDuplicate (match)); + p = FcPatternDuplicate (match); + f = XftFontOpenPattern (disp, p); if (!f) { + FcPatternDestroy (p); success = false; break; } @@ -1611,7 +1616,7 @@ push_font (new_font (buf, cs)); } else - rxvt_warn ("fontset element too long (>511 bytes), ignored."); + rxvt_warn ("fontset element too long (>511 bytes), ignored.\n"); desc = end + 1; }