mirror of
https://github.com/json-c/json-c.git
synced 2026-03-21 14:09:06 +08:00
* Fix subtle bug in linkhash where lookup could hang after all slots
were filled then successively freed.
Spotted by Jean-Marc Naud, j dash m at newtraxtech dot com
git-svn-id: http://svn.metaparadigm.com/svn/json-c/trunk@54 327403b1-1117-474d-bef2-5cb71233fd97
This commit is contained in:
@@ -1,3 +1,9 @@
|
||||
0.10
|
||||
* Fix subtle bug in linkhash where lookup could hang after all slots
|
||||
were filled then successively freed.
|
||||
Spotted by Jean-Marc Naud, j dash m at newtraxtech dot com
|
||||
* Make json_object_from_file take const char *filename
|
||||
Spotted by Vikram Raj V, vsagar at attinteractive dot com
|
||||
* Add handling of surrogate pairs (json_tokener.c, test4.c, Makefile.am)
|
||||
Brent Miller, bdmiller at yahoo dash inc dot com
|
||||
* Correction to comment describing printbuf_memappend in printbuf.h
|
||||
|
||||
@@ -158,13 +158,15 @@ struct lh_entry* lh_table_lookup_entry(struct lh_table *t, const void *k)
|
||||
{
|
||||
unsigned long h = t->hash_fn(k);
|
||||
unsigned long n = h % t->size;
|
||||
int count = 0;
|
||||
|
||||
t->lookups++;
|
||||
while( 1 ) {
|
||||
while( count < t->size ) {
|
||||
if(t->table[n].k == LH_EMPTY) return NULL;
|
||||
if(t->table[n].k != LH_FREED &&
|
||||
t->equal_fn(t->table[n].k, k)) return &t->table[n];
|
||||
if(++n == t->size) n = 0;
|
||||
count++;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user