static void _pop_environment(void) { struct environment *previous = _environment->previous; const char *key; char *value; while((value = str2ptr_pop(_environment->variables, &key))) { free(value); } str2ptr_free(_environment->variables); free(_environment); _environment = previous; }
void str2ptr_free(struct str2ptr *map) { void *value; char *key; while((value = str2ptr_pop(map, &key))) { if(map->key_free) { map->key_free((void *)key); } if(map->value_free) { map->value_free((void *)value); } } if(map->pair) { free(map->pair); } free(map); }