xterm-12.patch.txt

XFree96 3.1.3Dc - xterm patch #12 - T.Dickey
 
This corrects a memory leak in xterm that happens whenever one switches fonts.
 
--- /build/x11r6/XFree86-current/xc/programs/xterm/charproc.c.orig      Mon Mar 11 13:48:46 1996
+++ /build/x11r6/XFree86-current/xc/programs/xterm/charproc.c   Sat Mar 16 08:48:26 1996
@@ -3632,8 +3632,20 @@
     screen->normalboldGC = new_normalboldGC;
     screen->reverseGC = new_reverseGC;
     screen->reverseboldGC = new_reverseboldGC;
+
+    /* If we're switching fonts, free the old ones.  Otherwise we'll leak the
+     * memory that is associated with the old fonts. The XLoadQueryFont call
+     * allocates a new XFontStruct.
+     */
+    if (screen->fnt_bold != 0
+     && screen->fnt_bold != screen->fnt_norm)
+       XFreeFont(screen->display, screen->fnt_bold);
+    if (screen->fnt_norm != 0)
+       XFreeFont(screen->display, screen->fnt_norm);
+
     screen->fnt_norm = nfs;
     screen->fnt_bold = bfs;
+
     screen->enbolden = (nfs == bfs);
     set_menu_font (False);
     screen->menu_font_number = fontnum;