|
From: <sv...@va...> - 2015-05-21 22:01:26
|
Author: philippe
Date: Thu May 21 23:01:19 2015
New Revision: 15268
Log:
Also compare keys before calling cmp in the hash table stats printing
Modified:
trunk/coregrind/m_hashtable.c
Modified: trunk/coregrind/m_hashtable.c
==============================================================================
--- trunk/coregrind/m_hashtable.c (original)
+++ trunk/coregrind/m_hashtable.c Thu May 21 23:01:19 2015
@@ -278,22 +278,18 @@
nelt = 0;
// Is the same cnode element existing before cnode ?
for (node = table->chains[i]; node != cnode; node = node->next) {
- if (cmp) {
- if ((*cmp)(node, cnode) == 0)
- nelt++;
- } else
- if (node->key == cnode->key)
- nelt++;
+ if (node->key == cnode->key
+ && (cmp == NULL || cmp (node, cnode) == 0)) {
+ nelt++;
+ }
}
// If cnode element not in a previous node, count occurences of elt.
if (nelt == 0) {
for (node = cnode; node != NULL; node = node->next) {
- if (cmp) {
- if ((*cmp)(node, cnode) == 0)
- nelt++;
- } else
- if (node->key == cnode->key)
- nelt++;
+ if (node->key == cnode->key
+ && (cmp == NULL || cmp (node, cnode) == 0)) {
+ nelt++;
+ }
}
INCOCCUR(elt_occurences, nelt);
}
|