/* free memory allocated in holder for specific module */ void free_holder_by_module (GHolder ** holder, GModule module) { int j; if ((*holder) == NULL) return; for (j = 0; j < (*holder)[module].idx; j++) { free_holder_data ((*holder)[module].items[j]); } free ((*holder)[module].items); (*holder)[module].holder_size = 0; (*holder)[module].idx = 0; (*holder)[module].sub_items_size = 0; }
/* free memory allocated in holder */ void free_holder (GHolder ** holder) { GModule module; int j; if ((*holder) == NULL) return; for (module = 0; module < TOTAL_MODULES; module++) { for (j = 0; j < (*holder)[module].idx; j++) { free_holder_data ((*holder)[module].items[j]); } free ((*holder)[module].items); } free (*holder); (*holder) = NULL; }
/* Free all memory allocated in holder for all modules. */ void free_holder (GHolder ** holder) { GModule module; int j; size_t idx = 0; if ((*holder) == NULL) return; FOREACH_MODULE (idx, module_list) { module = module_list[idx]; for (j = 0; j < (*holder)[module].idx; j++) { free_holder_data ((*holder)[module].items[j]); } free ((*holder)[module].items); }