summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsebres <sebres@users.sourceforge.net>2024-04-12 23:03:19 (GMT)
committersebres <sebres@users.sourceforge.net>2024-04-12 23:03:19 (GMT)
commitfc1d78b041e73c4fef5326e5794ff43f4993c13c (patch)
tree31294289f4cde21d71fbc088eb1811cb7707117b
parent6508b65399000d941e47f1f1c50ce1359b1621d5 (diff)
parentae0d35c2744747f5e538c9aa52e21289b7eccfc1 (diff)
downloadtcl-fc1d78b041e73c4fef5326e5794ff43f4993c13c.zip
tcl-fc1d78b041e73c4fef5326e5794ff43f4993c13c.tar.gz
tcl-fc1d78b041e73c4fef5326e5794ff43f4993c13c.tar.bz2
merge 8.6
-rw-r--r--generic/tclHash.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/generic/tclHash.c b/generic/tclHash.c
index 742691c..c72dc6d 100644
--- a/generic/tclHash.c
+++ b/generic/tclHash.c
@@ -320,13 +320,16 @@ CreateHashEntry(
return hPtr;
}
}
- } else { /* no direct compare */
+ } else { /* no direct compare - compare key addresses only */
for (hPtr = tablePtr->buckets[index]; hPtr != NULL;
hPtr = hPtr->nextPtr) {
if (hash != PTR2UINT(hPtr->hash)) {
continue;
}
- 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;
}