diff options
author | andy <andrew.m.goth@gmail.com> | 2016-12-24 23:58:29 (GMT) |
---|---|---|
committer | andy <andrew.m.goth@gmail.com> | 2016-12-24 23:58:29 (GMT) |
commit | 7c99a698fd3f179581a181dca262acd85d9a107c (patch) | |
tree | 5cd7f57ead4a8c987f0a4cd9e29c8abb2ad024a6 /generic/tclInt.h | |
parent | ed7e266bfb3364bdbf7ae0da5edcb20aa597a46c (diff) | |
download | tcl-7c99a698fd3f179581a181dca262acd85d9a107c.zip tcl-7c99a698fd3f179581a181dca262acd85d9a107c.tar.gz tcl-7c99a698fd3f179581a181dca262acd85d9a107c.tar.bz2 |
Bug [46a2410650]: Create macro TclIsVarArraySearched to check if an array variable has an active search, and modify INST_UNSET_ARRAY to fall back on the slow unset method for array elements within an array being searched. The slow unset method involves a call to DeleteSearches() which stops all active searches.
Diffstat (limited to 'generic/tclInt.h')
-rw-r--r-- | generic/tclInt.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/generic/tclInt.h b/generic/tclInt.h index ede6411..f8c3ddd 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -804,6 +804,7 @@ typedef struct VarInHash { * MODULE_SCOPE int TclIsVarTemporary(Var *varPtr); * MODULE_SCOPE int TclIsVarArgument(Var *varPtr); * MODULE_SCOPE int TclIsVarResolved(Var *varPtr); + * MODULE_SCOPE int TclIsVarArraySearched(Var *varPtr); */ #define TclIsVarScalar(varPtr) \ @@ -845,6 +846,9 @@ typedef struct VarInHash { #define TclIsVarDeadHash(varPtr) \ ((varPtr)->flags & VAR_DEAD_HASH) +#define TclIsVarArraySearched(varPtr) \ + ((varPtr)->flags & VAR_SEARCH_ACTIVE) + #define TclGetVarNsPtr(varPtr) \ (TclIsVarInHash(varPtr) \ ? ((TclVarHashTable *) ((((VarInHash *) (varPtr))->entry.tablePtr)))->nsPtr \ |