return (h == hbucket_undefined);
}
-static hentry hentry_create (/*@keep@*/ cstring key, int val)
+static hentry hentry_create (/*@only@*/ cstring key, int val)
{
hentry h = (hentry) dmalloc (sizeof (*h));
}
llassert (e->val != HBUCKET_DNE);
- /*drl bee: si*/ h->entries[h->size] = e;
+ /*drl bee: si*/ h->entries[h->size] = e;
h->size++;
h->nspace--;
}
{
if (!hbucket_isNull (h))
{
- /*@i32@*/ sfree (h->entries);
+ int i;
+ /* evans 2002-07-12: added this to free entries (splint warning had been suppressed) */
+ for (i = 0; i < h->size; i++)
+ {
+ hentry_free (h->entries[i]);
+ }
+
+ sfree (h->entries);
sfree (h);
}
}
for (i = 0; i < h->size; i++)
{
- /*drl bee: si*/ hbucket_free (h->buckets[i]);
+ /*drl bee: si*/ hbucket_free (h->buckets[i]);
}
sfree (h->buckets);
for (p = cstring_toCharsSafe (key); *p != '\0'; p++)
{
- /*drl bee: nm*/ hash_value = (hash_value << 1) ^ g_randomNumbers[*p % 256];
+ /*drl bee: nm*/ hash_value = (hash_value << 1) ^ g_randomNumbers[*p % 256];
}
return (hash_value % h->size);
cstringTable_rehash (h);
}
- e = hentry_create (key, value);
hindex = cstringTable_hashValue (h, key);
+ e = hentry_create (key, value);
/*drl bee: si*/ hb = h->buckets[hindex];
{
/*drl bee: si*/ if (cstring_equal (hb->entries[i]->key, key))
{
- /*drl bee: si*/ hb->entries[i]->val = newval;
+ /*drl bee: si*/ hb->entries[i]->val = newval;
return;
}
}
{
hbucket hb;
llassert (cstringTable_isDefined (h));
-
+
hb = cstringTable_hash (h, oldkey);
llassert (cstring_equal (oldkey, newkey));
{
/*drl bee: si*/ if (cstring_equal (hb->entries[i]->key, oldkey))
{
- /*drl bee: si*/ hb->entries[i]->key = newkey;
+ /*drl bee: si*/ hb->entries[i]->key = newkey;
return;
}
}
if (i < hb->size - 1)
{
/*drl bee: si*/
- /*drl bee: si*/ hb->entries[i] = hb->entries[hb->size - 1];
+ hb->entries[i] = hb->entries[hb->size - 1];
}
hb->size--;