summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authordas <das@noemail.net>2009-02-06 08:13:23 (GMT)
committerdas <das@noemail.net>2009-02-06 08:13:23 (GMT)
commita9631b38c61daa1e8bfde300df8e91a4638a4dd6 (patch)
tree44f593df44065d8dcb637789eb6a8916b17c1726 /generic
parenta44664092576de392a6e549e3918ccb2b06056d5 (diff)
downloadtk-a9631b38c61daa1e8bfde300df8e91a4638a4dd6.zip
tk-a9631b38c61daa1e8bfde300df8e91a4638a4dd6.tar.gz
tk-a9631b38c61daa1e8bfde300df8e91a4638a4dd6.tar.bz2
* generic/tkImgPhoto.c: fix numerous leaks discovered with the
* generic/tkMenu.c: Mac OS X Instruments.app Leaks tool. * generic/tkText.c: * generic/tkTextImage.c: * generic/tkTextIndex.c: * generic/tkUndo.c: * generic/ttk/ttkFrame.c: * macosx/tkMacOSXWm.c: FossilOrigin-Name: d9450816286ce996e1ed59081d8104370d645c5d
Diffstat (limited to 'generic')
-rw-r--r--generic/tkImgPhoto.c4
-rw-r--r--generic/tkMenu.c11
-rw-r--r--generic/tkText.c3
-rw-r--r--generic/tkTextImage.c5
-rw-r--r--generic/tkTextIndex.c8
-rw-r--r--generic/tkUndo.c10
-rw-r--r--generic/ttk/ttkFrame.c5
7 files changed, 33 insertions, 13 deletions
diff --git a/generic/tkImgPhoto.c b/generic/tkImgPhoto.c
index 6d5bfec..9ffbb3d 100644
--- a/generic/tkImgPhoto.c
+++ b/generic/tkImgPhoto.c
@@ -17,7 +17,7 @@
* Department of Computer Science,
* Australian National University.
*
- * RCS: @(#) $Id: tkImgPhoto.c,v 1.76.2.2 2009/01/14 22:59:02 nijtmans Exp $
+ * RCS: @(#) $Id: tkImgPhoto.c,v 1.76.2.3 2009/02/06 08:13:23 das Exp $
*/
#include "tkInt.h"
@@ -2466,6 +2466,8 @@ ImgPhotoGet(
WhitePixelOfScreen(Tk_Screen(tkwin));
gcValues.background = (black != NULL)? black->pixel:
BlackPixelOfScreen(Tk_Screen(tkwin));
+ Tk_FreeColor(white);
+ Tk_FreeColor(black);
gcValues.graphics_exposures = False;
instancePtr->gc = Tk_GetGC(tkwin,
GCForeground|GCBackground|GCGraphicsExposures, &gcValues);
diff --git a/generic/tkMenu.c b/generic/tkMenu.c
index a402fc3..acb6ac9 100644
--- a/generic/tkMenu.c
+++ b/generic/tkMenu.c
@@ -12,7 +12,7 @@
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMenu.c,v 1.41 2007/12/13 15:24:15 dgp Exp $
+ * RCS: @(#) $Id: tkMenu.c,v 1.41.2.1 2009/02/06 08:13:23 das Exp $
*/
/*
@@ -393,6 +393,13 @@ static Tk_ClassProcs menuClass = {
*--------------------------------------------------------------
*/
+static void
+FreeOptionTables(
+ ClientData clientData)
+{
+ ckfree(clientData);
+}
+
int
TkCreateMenuCmd(
Tcl_Interp *interp) /* Interpreter we are creating the command
@@ -417,7 +424,7 @@ TkCreateMenuCmd(
Tk_CreateOptionTable(interp, specsArray[CHECK_BUTTON_ENTRY]);
Tcl_CreateObjCommand(interp, "menu", MenuCmd,
- (ClientData) optionTablesPtr, NULL);
+ (ClientData) optionTablesPtr, FreeOptionTables);
if (Tcl_IsSafe(interp)) {
Tcl_HideCommand(interp, "menu", "menu");
diff --git a/generic/tkText.c b/generic/tkText.c
index fb2f9b1..95d91e5 100644
--- a/generic/tkText.c
+++ b/generic/tkText.c
@@ -13,7 +13,7 @@
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkText.c,v 1.79.2.2 2008/12/21 23:52:45 ferrieux Exp $
+ * RCS: @(#) $Id: tkText.c,v 1.79.2.3 2009/02/06 08:13:23 das Exp $
*/
#include "default.h"
@@ -1955,6 +1955,7 @@ DestroyText(
if (sharedTextPtr->bindingTable != NULL) {
Tk_DeleteBindingTable(sharedTextPtr->bindingTable);
}
+ ckfree((char *) sharedTextPtr);
}
if (textPtr->tabArrayPtr != NULL) {
diff --git a/generic/tkTextImage.c b/generic/tkTextImage.c
index e63b909..dcdcd35 100644
--- a/generic/tkTextImage.c
+++ b/generic/tkTextImage.c
@@ -9,7 +9,7 @@
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkTextImage.c,v 1.22 2007/12/13 15:24:17 dgp Exp $
+ * RCS: @(#) $Id: tkTextImage.c,v 1.22.2.1 2009/02/06 08:13:23 das Exp $
*/
#include "tkPort.h"
@@ -472,6 +472,9 @@ EmbImageDeleteProc(
Tk_FreeConfigOptions((char *) &eiPtr->body.ei, eiPtr->body.ei.optionTable,
NULL);
+ if (eiPtr->body.ei.name) {
+ ckfree(eiPtr->body.ei.name);
+ }
ckfree((char *) eiPtr);
return 0;
}
diff --git a/generic/tkTextIndex.c b/generic/tkTextIndex.c
index 4219feb..5173e90 100644
--- a/generic/tkTextIndex.c
+++ b/generic/tkTextIndex.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkTextIndex.c,v 1.28 2007/12/13 15:24:17 dgp Exp $
+ * RCS: @(#) $Id: tkTextIndex.c,v 1.28.2.1 2009/02/06 08:13:23 das Exp $
*/
#include "default.h"
@@ -113,9 +113,13 @@ DupTextIndexInternalRep(
dupIndexPtr->tree = indexPtr->tree;
dupIndexPtr->linePtr = indexPtr->linePtr;
dupIndexPtr->byteIndex = indexPtr->byteIndex;
-
+ dupIndexPtr->textPtr = indexPtr->textPtr;
+ if (dupIndexPtr->textPtr != NULL) {
+ dupIndexPtr->textPtr->refCount++;
+ }
SET_TEXTINDEX(copyPtr, dupIndexPtr);
SET_INDEXEPOCH(copyPtr, epoch);
+ copyPtr->typePtr = &tkTextIndexType;
}
/*
diff --git a/generic/tkUndo.c b/generic/tkUndo.c
index e875bf3..326c818 100644
--- a/generic/tkUndo.c
+++ b/generic/tkUndo.c
@@ -9,7 +9,7 @@
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkUndo.c,v 1.13 2007/12/13 15:24:21 dgp Exp $
+ * RCS: @(#) $Id: tkUndo.c,v 1.13.2.1 2009/02/06 08:13:23 das Exp $
*/
#include "tkInt.h"
@@ -131,7 +131,7 @@ TkUndoClearStack(
TkUndoSubAtom *sub;
sub = elem->apply;
- while (sub->next != NULL) {
+ while (sub != NULL) {
TkUndoSubAtom *next = sub->next;
if (sub->action != NULL) {
@@ -142,7 +142,7 @@ TkUndoClearStack(
}
sub = elem->revert;
- while (sub->next != NULL) {
+ while (sub != NULL) {
TkUndoSubAtom *next = sub->next;
if (sub->action != NULL) {
@@ -399,7 +399,7 @@ TkUndoSetDepth(
prevelem = elem;
if (elem->type != TK_UNDO_SEPARATOR) {
TkUndoSubAtom *sub = elem->apply;
- while (sub->next != NULL) {
+ while (sub != NULL) {
TkUndoSubAtom *next = sub->next;
if (sub->action != NULL) {
@@ -409,7 +409,7 @@ TkUndoSetDepth(
sub = next;
}
sub = elem->revert;
- while (sub->next != NULL) {
+ while (sub != NULL) {
TkUndoSubAtom *next = sub->next;
if (sub->action != NULL) {
diff --git a/generic/ttk/ttkFrame.c b/generic/ttk/ttkFrame.c
index c0f5ed6..e7e3ca6 100644
--- a/generic/ttk/ttkFrame.c
+++ b/generic/ttk/ttkFrame.c
@@ -1,4 +1,4 @@
-/* $Id: ttkFrame.c,v 1.12 2008/01/08 20:02:27 jenglish Exp $
+/* $Id: ttkFrame.c,v 1.12.2.1 2009/02/06 08:13:23 das Exp $
* Copyright (c) 2004, Joe English
*
* ttk::frame and ttk::labelframe widgets.
@@ -535,6 +535,9 @@ static void LabelframeCleanup(void *recordPtr)
{
Labelframe *lframe = recordPtr;
Ttk_DeleteManager(lframe->label.mgr);
+ if (lframe->label.labelLayout) {
+ Ttk_FreeLayout(lframe->label.labelLayout);
+ }
}
/* RaiseLabelWidget --