summaryrefslogtreecommitdiffstats
path: root/generic/tkButton.c
diff options
context:
space:
mode:
Diffstat (limited to 'generic/tkButton.c')
-rw-r--r--generic/tkButton.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/generic/tkButton.c b/generic/tkButton.c
index b539552..e761137 100644
--- a/generic/tkButton.c
+++ b/generic/tkButton.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: tkButton.c,v 1.8 2000/05/25 16:57:23 ericm Exp $
+ * RCS: @(#) $Id: tkButton.c,v 1.9 2000/08/23 00:08:45 hobbs Exp $
*/
#include "tkButton.h"
@@ -1645,9 +1645,14 @@ ButtonTextVarProc(clientData, interp, name1, name2, flags)
if (valuePtr == NULL) {
valuePtr = Tcl_NewObj();
}
- Tcl_DecrRefCount(butPtr->textPtr);
+ /*
+ * Incr valuePtr before Decr, in case they point to the same object.
+ * We could also do some short-circuiting in that case, but it
+ * shouldn't happen in practice.
+ */
+ Tcl_IncrRefCount(valuePtr);
butPtr->textPtr = valuePtr;
- Tcl_IncrRefCount(butPtr->textPtr);
+ Tcl_DecrRefCount(butPtr->textPtr);
TkpComputeButtonGeometry(butPtr);
if ((butPtr->tkwin != NULL) && Tk_IsMapped(butPtr->tkwin)