<p dir="ltr"><br>
12. apr. 2015 18.33 skrev "Emil Velikov" <<a href="mailto:emil.l.velikov@gmail.com">emil.l.velikov@gmail.com</a>>:<br>
><br>
> Hi Thomas,<br>
><br>
> On 11/04/15 23:25, Thomas Helland wrote:<br>
> > Add a test to exercise a worst case collision scenario<br>
> > that may cause us to not be able to find an empty<br>
> > slot in the table even though it is not full.<br>
> > This hits the bug in my last revision of the series<br>
> > converting the hash table to quadratic probing.<br>
> ><br>
> > Signed-off-by: Thomas Helland <<a href="mailto:thomashelland90@gmail.com">thomashelland90@gmail.com</a>><br>
> > ---<br>
> >  src/util/tests/hash_table/collision.c | 14 ++++++++++++++<br>
> >  1 file changed, 14 insertions(+)<br>
> ><br>
> > diff --git a/src/util/tests/hash_table/collision.c b/src/util/tests/hash_table/collision.c<br>
> > index 69a4c29..ba284d8 100644<br>
> > --- a/src/util/tests/hash_table/collision.c<br>
> > +++ b/src/util/tests/hash_table/collision.c<br>
> > @@ -89,6 +89,20 @@ main(int argc, char **argv)<br>
> >     entry2 = _mesa_hash_table_search_pre_hashed(ht, bad_hash, str2);<br>
> >     assert(entry2->key == str2);<br>
> ><br>
> > +<br>
> > +   _mesa_hash_table_destroy(ht, NULL);<br>
> > +<br>
> > +   /* Try inserting multiple items with the same hash<br>
> > +    * This exercises a worst case scenario where we might fail to find<br>
> > +    * an empty slot in the table, even though there is free space<br>
> > +    */<br>
> > +   ht = _mesa_hash_table_create(NULL, NULL, _mesa_key_string_equal);<br>
> > +   for (i = 0; i < 100; i++) {<br>
> > +      char *key = malloc(10);<br>
> > +      sprintf(key, "spam%d", i);<br>
> > +      assert(_mesa_hash_table_insert_pre_hashed(ht, bad_hash, key, NULL) != NULL);<br>
> Please don't include code in asserts - it won't exist for non-debug builds.</p>
<p dir="ltr">I'll post an updated version by tomorrow.</p>
<p dir="ltr">-Thomas</p>
<p dir="ltr">><br>
> -Emil<br>
</p>