From ebeb827b390fc16a336075602b70bb195f966430 Mon Sep 17 00:00:00 2001 From: oharboe Date: Sun, 16 Aug 2009 11:15:52 +0000 Subject: Fix 'unset ::var' to unset a global var It was doing nothing. Signed-off-by: Steve Bennett --- jim.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'jim.c') diff --git a/jim.c b/jim.c index 3227a23..3b0e207 100644 --- a/jim.c +++ b/jim.c @@ -3,7 +3,7 @@ * Copyright 2005 Salvatore Sanfilippo * Copyright 2005 Clemens Hintze * Copyright 2005 patthoyts - Pat Thoyts - * Copyright 2008 oharboe - Øyvind Harboe - oyvind.harboe@zylin.com + * Copyright 2008 oharboe - �yvind Harboe - oyvind.harboe@zylin.com * Copyright 2008 Andrew Lunn * Copyright 2008 Duane Ellis * Copyright 2008 Uwe Klein @@ -3724,10 +3724,13 @@ int Jim_UnsetVariable(Jim_Interp *interp, Jim_Obj *nameObjPtr, int flags) } else { name = Jim_GetString(nameObjPtr, NULL); if (name[0] == ':' && name[1] == ':') { - name += 2; + 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; } - 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; -- cgit v1.1