summaryrefslogtreecommitdiffstats
path: root/generic/tclHash.c
diff options
context:
space:
mode:
authorsebres <sebres@users.sourceforge.net>2024-04-12 22:58:56 (GMT)
committersebres <sebres@users.sourceforge.net>2024-04-12 22:58:56 (GMT)
commit949672cd606685691ea107efd3e09825d3de8953 (patch)
tree9375d113261b79f38921b1bab55299c57bccbefe /generic/tclHash.c
parent95ba4d90b35db89ffba05ae1e25f9d1d03e7df55 (diff)
parent05fad8df8972def0af73c6f528308220660ba67b (diff)
downloadtcl-949672cd606685691ea107efd3e09825d3de8953.zip
tcl-949672cd606685691ea107efd3e09825d3de8953.tar.gz
tcl-949672cd606685691ea107efd3e09825d3de8953.tar.bz2
merge 8.5 (minor backport from my core) simple speed-up if searching for the key from hash itself (it is safe to compare needle with an address to key.string)
Diffstat (limited to 'generic/tclHash.c')
-rw-r--r--generic/tclHash.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/generic/tclHash.c b/generic/tclHash.c
index 83bc0fb..189748c 100644
--- a/generic/tclHash.c
+++ b/generic/tclHash.c
@@ -344,7 +344,10 @@ CreateHashEntry(
continue;
}
#endif
- if (compareKeysProc((void *) key, hPtr)) {
+ /* if needle pointer equals content pointer or values equal */
+ if ((key == hPtr->key.string)
+ || compareKeysProc((void *) key, hPtr)
+ ) {
if (newPtr) {
*newPtr = 0;
}