Make 0 a valid hashtable value consistently (and 0xFFFFFFFF invalid).
authorJ. Ali Harlow <ali@juiblex.co.uk>
Fri, 17 Apr 2009 22:08:11 +0000 (23:08 +0100)
committerJ. Ali Harlow <ali@juiblex.co.uk>
Fri, 17 Apr 2009 22:08:11 +0000 (23:08 +0100)
librazor/types.c

index 9c2814f..72c63d5 100644 (file)
@@ -180,14 +180,14 @@ hashtable_lookup(struct hashtable *table, const char *key)
        for (i = 0; i < table->buckets.alloc; i += sizeof *b) {
                b = table->buckets.data + ((start + i) & mask);
 
-               if (*b == 0)
-                       return 0;
+               if (*b == 0xFFFFFFFF)
+                       return 0xFFFFFFFF;
 
                if (strcmp(key, &pool[*b]) == 0)
                        return *b;
        }
 
-       return 0;
+       return 0xFFFFFFFF;
 }
 
 static void
@@ -203,7 +203,7 @@ do_insert(struct hashtable *table, uint32_t value)
 
        for (i = 0; i < table->buckets.alloc; i += sizeof *b) {
                b = table->buckets.data + ((start + i) & mask);
-               if (*b == 0) {
+               if (*b == 0xFFFFFFFF) {
                        *b = value;
                        break;
                }
@@ -233,11 +233,11 @@ hashtable_insert(struct hashtable *table, const char *key)
        array_add(&table->buckets, 4 * sizeof *buckets);
        if (alloc != table->buckets.alloc) {
                end = table->buckets.data + alloc;
-               memset(end, 0, table->buckets.alloc - alloc);
+               memset(end, 0xFF, table->buckets.alloc - alloc);
                for (b = table->buckets.data; b < end; b++) {
                        value = *b;
-                       if (value != 0) {
-                               *b = 0;
+                       if (value != 0xFFFFFFFF) {
+                               *b = 0xFFFFFFFF;
                                do_insert(table, value);
                        }
                }
@@ -258,7 +258,7 @@ hashtable_tokenize(struct hashtable *table, const char *string)
                string = "";
 
        token = hashtable_lookup(table, string);
-       if (token != 0)
+       if (token != 0xFFFFFFFF)
                return token;
 
        return hashtable_insert(table, string);