summaryrefslogtreecommitdiff
path: root/ecp/src/ecp/htable/hashtable_itr.c
diff options
context:
space:
mode:
Diffstat (limited to 'ecp/src/ecp/htable/hashtable_itr.c')
-rwxr-xr-xecp/src/ecp/htable/hashtable_itr.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/ecp/src/ecp/htable/hashtable_itr.c b/ecp/src/ecp/htable/hashtable_itr.c
index e77bbb0..85114f2 100755
--- a/ecp/src/ecp/htable/hashtable_itr.c
+++ b/ecp/src/ecp/htable/hashtable_itr.c
@@ -8,7 +8,7 @@
/*****************************************************************************/
/* hashtable_iterator - iterator constructor */
-int
+void
hashtable_iterator(struct hashtable_itr *itr, struct hashtable *h)
{
unsigned int i, tablelength;
@@ -17,7 +17,7 @@ hashtable_iterator(struct hashtable_itr *itr, struct hashtable *h)
itr->parent = NULL;
tablelength = h->tablelength;
itr->index = tablelength;
- if (0 == h->entrycount) return -1;
+ if (0 == h->entrycount) return;
for (i = 0; i < tablelength; i++)
{
@@ -28,7 +28,6 @@ hashtable_iterator(struct hashtable_itr *itr, struct hashtable *h)
break;
}
}
- return -1;
}
/*****************************************************************************/
@@ -38,15 +37,21 @@ hashtable_iterator(struct hashtable_itr *itr, struct hashtable *h)
void *
hashtable_iterator_key(struct hashtable_itr *i)
-{ return i->e->k; }
+{
+ return i->e ? i->e->k : NULL;
+}
void *
hashtable_iterator_value(struct hashtable_itr *i)
-{ return i->e->v; }
+{
+ return i->e ? i->e->v : NULL;
+}
struct entry *
hashtable_iterator_entry(struct hashtable_itr *i)
-{ return i->e; }
+{
+ return i->e;
+}
/*****************************************************************************/
/* advance - advance the iterator to the next element
@@ -158,7 +163,6 @@ hashtable_iterator_search(struct hashtable_itr *itr, void *k)
itr->index = index;
itr->e = e;
itr->parent = parent;
- itr->h = h;
return -1;
}
parent = e;
@@ -184,8 +188,8 @@ hashtable_iterator_search_next(struct hashtable_itr *itr, void *k)
/* Check hash value to short circuit heavier comparison */
if ((hashvalue == e->h) && (h->eqfn(k, e->k)))
{
- itr->parent = parent;
itr->e = e;
+ itr->parent = parent;
return -1;
}
parent = e;