summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhobbs <hobbs>2007-10-02 21:53:44 (GMT)
committerhobbs <hobbs>2007-10-02 21:53:44 (GMT)
commit663575eb38592a78c77567a110ff260a7ebb9258 (patch)
treec17e0d920eebe22e8fd4fa0047debd633cb27b5f
parent69718fd058c2a079624553c560274baf65b9d923 (diff)
downloadtcl-663575eb38592a78c77567a110ff260a7ebb9258.zip
tcl-663575eb38592a78c77567a110ff260a7ebb9258.tar.gz
tcl-663575eb38592a78c77567a110ff260a7ebb9258.tar.bz2
* generic/tcl.h (Tcl_DecrRefCount): Update change from 2006-05-29
to make macro more warning-robust in unbraced if code.
-rw-r--r--ChangeLog5
-rw-r--r--generic/tcl.h7
2 files changed, 9 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index d45ce67..b298155 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-10-02 Jeff Hobbs <jeffh@ActiveState.com>
+
+ * generic/tcl.h (Tcl_DecrRefCount): Update change from 2006-05-29
+ to make macro more warning-robust in unbraced if code.
+
2007-10-02 Don Porter <dgp@users.sourceforge.net>
* README: Bump version number to 8.4.17
diff --git a/generic/tcl.h b/generic/tcl.h
index bbe6515..7c68b81 100644
--- a/generic/tcl.h
+++ b/generic/tcl.h
@@ -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: tcl.h,v 1.153.2.32 2007/10/02 17:46:50 dgp Exp $
+ * RCS: @(#) $Id: tcl.h,v 1.153.2.33 2007/10/02 21:53:45 hobbs Exp $
*/
#ifndef _TCL
@@ -827,10 +827,11 @@ int Tcl_IsShared _ANSI_ARGS_((Tcl_Obj *objPtr));
# define Tcl_IncrRefCount(objPtr) \
++(objPtr)->refCount
/*
- * Use empty if ; else to handle use in unbraced outer if/else conditions
+ * Use do/while0 idiom for optimum correctness without compiler warnings
+ * http://c2.com/cgi/wiki?TrivialDoWhileLoop
*/
# define Tcl_DecrRefCount(objPtr) \
- if (--(objPtr)->refCount > 0) ; else TclFreeObj(objPtr)
+ do { if (--(objPtr)->refCount <= 0) TclFreeObj(objPtr); } while(0)
# define Tcl_IsShared(objPtr) \
((objPtr)->refCount > 1)
#endif