aboutsummaryrefslogtreecommitdiff
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
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.
-rw-r--r--ChangeLog7
-rw-r--r--jim.c12
2 files changed, 15 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index c66fd81..902a116 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-08-16 Steve Bennett <steveb@workware.net.au>
+
+ * jim.c: 'unset ::var' to unset a global var.
+ It was doing nothing.
+
2008-11-06 Steve Bennett <steveb@workware.net.au>
* jim.c: Implement info hostname by calling os.hostname
@@ -203,7 +208,7 @@ src/Jim.h
2008-06-13 oharboe
- * ChangeLog: Øyvind Harboe's first test as a committer.
+ * ChangeLog: �yvind Harboe's first test as a committer.
2006-11-06 21:29 antirez
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;