aboutsummaryrefslogtreecommitdiff
path: root/jim.c
diff options
context:
space:
mode:
authoroharboe <oharboe>2009-08-16 11:15:52 +0000
committeroharboe <oharboe>2009-08-16 11:15:52 +0000
commit49bad8e52dd1dcd0b9fb921e13c29560f14911a3 (patch)
tree626b323980d359136980ee6a4881fd7cbcf6c3a0 /jim.c
parent5b422b2d2f08d10f38bf14cdecb59d49ab21eccc (diff)
downloadjimtcl-49bad8e52dd1dcd0b9fb921e13c29560f14911a3.zip
jimtcl-49bad8e52dd1dcd0b9fb921e13c29560f14911a3.tar.gz
jimtcl-49bad8e52dd1dcd0b9fb921e13c29560f14911a3.tar.bz2
2009-08-16 Steve Bennett <steveb@workware.net.au>
* jim.c: 'unset ::var' to unset a global var. It was doing nothing.
Diffstat (limited to 'jim.c')
-rw-r--r--jim.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/jim.c b/jim.c
index fb20045..3c74aa2 100644
--- a/jim.c
+++ b/jim.c
@@ -3,7 +3,7 @@
* Copyright 2005 Salvatore Sanfilippo <antirez@invece.org>
* Copyright 2005 Clemens Hintze <c.hintze@gmx.net>
* Copyright 2005 patthoyts - Pat Thoyts <patthoyts@users.sf.net>
- * Copyright 2008 oharboe - Øyvind Harboe - oyvind.harboe@zylin.com
+ * Copyright 2008 oharboe - �yvind Harboe - oyvind.harboe@zylin.com
* Copyright 2008 Andrew Lunn <andrew@lunn.ch>
* Copyright 2008 Duane Ellis <openocd@duaneellis.com>
* Copyright 2008 Uwe Klein <uklein@klein-messgeraete.de>
@@ -3759,8 +3759,14 @@ int Jim_UnsetVariable(Jim_Interp *interp, Jim_Obj *nameObjPtr, int flags)
return retval;
} else {
name = Jim_GetString(nameObjPtr, NULL);
- if (Jim_DeleteHashEntry(&interp->framePtr->vars, name)
- != JIM_OK) return JIM_ERR;
+ if (name[0] == ':' && name[1] == ':') {
+ if (Jim_DeleteHashEntry(&interp->topFramePtr->vars, name + 2) != JIM_OK) {
+ return JIM_ERR;
+ }
+ }
+ else if (Jim_DeleteHashEntry(&interp->framePtr->vars, name) != JIM_OK) {
+ return JIM_ERR;
+ }
/* Change the callframe id, invalidating var lookup caching */
JimChangeCallFrameId(interp, interp->framePtr);
return JIM_OK;