diff --git a/ctables/ctable_search.c b/ctables/ctable_search.c index 8707cba..3207a5e 100644 --- a/ctables/ctable_search.c +++ b/ctables/ctable_search.c @@ -562,6 +562,7 @@ static int ctable_SearchAction (Tcl_Interp *interp, CTable *ctable, CTableSearch *search, ctable_BaseRow *row) { char *key; ctable_CreatorTable *creator = ctable->creator; + char *array_to_unset = NULL; key = row->hashEntry.key; @@ -647,6 +648,7 @@ ctable_SearchAction (Tcl_Interp *interp, CTable *ctable, CTableSearch *search, c if (result != TCL_OK) { return result; } + array_to_unset = Tcl_GetString(search->rowVarNameObj); break; } @@ -715,6 +717,13 @@ ctable_SearchAction (Tcl_Interp *interp, CTable *ctable, CTableSearch *search, c // evals. Cool. // evalResult = Tcl_EvalObjEx (interp, search->codeBody, 0); + + // silently unset the array variable if needed + if (array_to_unset) { + Tcl_UnsetVar2(interp, array_to_unset, NULL, 0); + array_to_unset = NULL; + } + switch (evalResult) { case TCL_ERROR: Tcl_AddErrorInfo (interp, "\n while processing search code body");