int drmHashFirst(void *t, unsigned long *key, void **value) { HashTablePtr table = (HashTablePtr)t; if (table->magic != HASH_MAGIC) return -1; /* Bad magic */ table->p0 = 0; table->p1 = table->buckets[0]; return drmHashNext(table, key, value); }
void driDestroyHashContents(void *drawHash) { unsigned long key; void *content; drawableInfo *drawInfo; if (drmHashFirst(drawHash, &key, &content) < 1) return; drawInfo = (drawableInfo *) content; if (drawInfo->clipBack) XFree(drawInfo->clipBack); if (drawInfo->clipFront) XFree(drawInfo->clipFront); free(drawInfo); while(drmHashNext(drawHash, &key, &content) == 1) { drawInfo = (drawableInfo *) content; if (drawInfo->clipBack) XFree(drawInfo->clipBack); if (drawInfo->clipFront) XFree(drawInfo->clipFront); free(drawInfo); } return ; }