void StorageFree(Storage **storage, StorageEnum type) { if (*storage == NULL) return; #ifdef DEBUG BUG_ON(!storage_registraton_closed); #endif #ifdef UNITTESTS if (storage_map == NULL) return; #endif Storage *store = *storage; int i; for (i = 0; i < storage_max_id[type]; i++) { if (store[i] != NULL) { StorageMapping *map = &storage_map[type][i]; map->Free(store[i]); store[i] = NULL; } } SCFree(*storage); *storage = NULL; }
void StorageFreeById(Storage *storage, StorageEnum type, int id) { #ifdef DEBUG BUG_ON(!storage_registraton_closed); #endif SCLogDebug("storage %p id %d", storage, id); StorageMapping *map = &storage_map[type][id]; Storage *store = storage; if (store != NULL) { SCLogDebug("store %p", store); if (store[id] != NULL) { map->Free(store[id]); store[id] = NULL; } } }