void pdf_emptystore(pdf_store *store) { pdf_item *item; pdf_item *next; struct refkey *key; int i; for (i = 0; i < fz_hashlen(store->hash); i++) { key = fz_hashgetkey(store->hash, i); item = fz_hashgetval(store->hash, i); if (item) { fz_dropobj(item->key); dropitem(key->kind, item->val); fz_free(item); } } fz_emptyhash(store->hash); for (item = store->root; item; item = next) { next = item->next; fz_dropobj(item->key); dropitem(item->kind, item->val); fz_free(item); } store->root = nil; }
void pdf_emptystore(pdf_store *store) { pdf_item *item; pdf_item *next; struct refkey *key; void *val; int i; for (i = 0; i < fz_hashlen(store->hash); i++) { key = fz_hashgetkey(store->hash, i); val = fz_hashgetval(store->hash, i); if (val) { #ifdef PSP if (key->kind == PDF_KIMAGE) printf("es 1.2 - I %p\n", val); #endif dropitem(key->kind, val); } } fz_emptyhash(store->hash); for (item = store->root; item; item = next) { next = item->next; fz_dropobj(item->key); dropitem(item->kind, item->val); fz_free(item); } store->root = nil; }
static void evictitem(pdf_item *item) { pdf_logrsrc("evicting item %s (%d %d R) at age %d\n", kindstr(item->kind), fz_tonum(item->key), fz_togen(item->key), item->age); fz_dropobj(item->key); dropitem(item->kind, item->val); fz_free(item); }
void pdf_removeitem(pdf_store *store, pdf_itemkind kind, fz_obj *key) { pdf_item *item, *prev; struct refkey refkey; if (key == nil) return; if (fz_isindirect(key)) { refkey.kind = kind; refkey.oid = fz_tonum(key); refkey.gen = fz_togen(key); item = fz_hashfind(store->hash, &refkey); if (!item) return; fz_hashremove(store->hash, &refkey); pdf_logrsrc("remove item %s (%d %d R) ptr=%p\n", kindstr(kind), fz_tonum(key), fz_togen(key), item->val); dropitem(kind, item->val); fz_dropobj(item->key); fz_free(item); } else { prev = nil; for (item = store->root; item; item = item->next) { if (item->kind == kind && !fz_objcmp(item->key, key)) { if (!prev) store->root = item->next; else prev->next = item->next; dropitem(kind, item->val); fz_dropobj(item->key); fz_free(item); break; } prev = item; } } }