summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpooryorick <com.digitalsmarties@pooryorick.com>2017-12-11 23:50:22 (GMT)
committerpooryorick <com.digitalsmarties@pooryorick.com>2017-12-11 23:50:22 (GMT)
commit0239e7e77f3f12c24179f6c021d3f7b40dfcf981 (patch)
treec6e4f45e511d4d71c64f4a27500a0e5431c672ed
parent2555e0d7e6f980833f0369e83b81b0c37050c3f5 (diff)
downloadtcl-0239e7e77f3f12c24179f6c021d3f7b40dfcf981.zip
tcl-0239e7e77f3f12c24179f6c021d3f7b40dfcf981.tar.gz
tcl-0239e7e77f3f12c24179f6c021d3f7b40dfcf981.tar.bz2
Add the check for wrong arguments back to TclOO_Object_Destroy, remove
inadvertant increment of Namespace->refCount.
-rw-r--r--generic/tclBasic.c1
-rw-r--r--generic/tclOO.c4
-rw-r--r--generic/tclOOBasic.c5
3 files changed, 8 insertions, 2 deletions
diff --git a/generic/tclBasic.c b/generic/tclBasic.c
index a23100e..ce46cd4 100644
--- a/generic/tclBasic.c
+++ b/generic/tclBasic.c
@@ -3153,7 +3153,6 @@ Tcl_DeleteCommandFromToken(
cmdPtr->nsPtr->refCount++;
- cmdPtr->nsPtr->refCount++;
if (cmdPtr->tracePtr != NULL) {
CommandTrace *tracePtr;
CallCommandTraces(iPtr,cmdPtr,NULL,NULL,TCL_TRACE_DELETE);
diff --git a/generic/tclOO.c b/generic/tclOO.c
index ae1ae3f..1a9bfc4 100644
--- a/generic/tclOO.c
+++ b/generic/tclOO.c
@@ -236,8 +236,10 @@ MODULE_SCOPE const TclOOStubs tclOOStubs;
#define IsRoot(ocPtr) ((ocPtr)->flags & (ROOT_OBJECT|ROOT_CLASS))
#define RemoveItem(type, lst, i) \
+ do { \
Remove ## type ((lst).list, (lst).num, i); \
- (lst).num--
+ (lst).num-- \
+ } while 0
/*
* ----------------------------------------------------------------------
diff --git a/generic/tclOOBasic.c b/generic/tclOOBasic.c
index 84f414d..b2c06a7 100644
--- a/generic/tclOOBasic.c
+++ b/generic/tclOOBasic.c
@@ -340,6 +340,11 @@ TclOO_Object_Destroy(
Object *oPtr = (Object *) Tcl_ObjectContextObject(context);
CallContext *contextPtr;
+ if (objc != Tcl_ObjectContextSkippedArgs(context)) {
+ Tcl_WrongNumArgs(interp, Tcl_ObjectContextSkippedArgs(context), objv,
+ NULL);
+ return TCL_ERROR;
+ }
if (!(oPtr->flags & DESTRUCTOR_CALLED)) {
oPtr->flags |= DESTRUCTOR_CALLED;
contextPtr = TclOOGetCallContext(oPtr, NULL, DESTRUCTOR, NULL);