From 4de969ee15c8df8c69b978f746350ac026f6622d Mon Sep 17 00:00:00 2001
From: patthoyts <patthoyts@users.sourceforge.net>
Date: Tue, 23 Oct 2007 09:23:52 +0000
Subject: Fixed leak in CreateNamedFont spotted by das.

---
 ChangeLog       |  4 ++++
 win/tkWinFont.c | 18 ++++++------------
 2 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index d166935..8d19c1c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2007-10-23  Pat Thoyts  <patthoyts@users.sourceforge.net>
+
+	* win/tkWinFont.c: Fixed leak in CreateNamedFont spotted by das.
+
 2007-10-23  Daniel Steffen  <das@users.sourceforge.net>
 
 	* library/demos/combo.tcl:	Aqua GOOBE.
diff --git a/win/tkWinFont.c b/win/tkWinFont.c
index 69ae9f9..89b98a7 100644
--- a/win/tkWinFont.c
+++ b/win/tkWinFont.c
@@ -11,7 +11,7 @@
  * See the file "license.terms" for information on usage and redistribution of
  * this file, and for a DISCLAIMER OF ALL WARRANTIES.
  *
- * RCS: @(#) $Id: tkWinFont.c,v 1.33 2007/09/08 16:13:45 dkf Exp $
+ * RCS: @(#) $Id: tkWinFont.c,v 1.34 2007/10/23 09:23:54 patthoyts Exp $
  */
 
 #include "tkWinInt.h"
@@ -368,19 +368,13 @@ CreateNamedSystemFont(
     CONST char* name,
     HFONT hFont)
 {
-    TkFontAttributes *faPtr;
-    WinFont *fontPtr;
+    WinFont winfont;
     int r;
     
-    TkDeleteNamedFont(interp, tkwin, name);
-    
-    fontPtr = (WinFont *) ckalloc(sizeof(WinFont));
-    InitFont(tkwin, hFont, 0, fontPtr);
-    faPtr = (TkFontAttributes*)ckalloc(sizeof(TkFontAttributes));
-    memcpy(faPtr, &fontPtr->font.fa, sizeof(TkFontAttributes));
-    r = TkCreateNamedFont(interp, tkwin, name, faPtr);
-    TkpDeleteFont((TkFont *)fontPtr);
-    ckfree((char *) fontPtr);
+    TkDeleteNamedFont(NULL, tkwin, name);
+    InitFont(tkwin, hFont, 0, &winfont);
+    r = TkCreateNamedFont(interp, tkwin, name, &winfont.font.fa);
+    TkpDeleteFont((TkFont *)&winfont);
     return r;
 }
 
-- 
cgit v0.12