static void free_mode(struct sway_mode *mode) { free(mode->name); int i; for (i = 0; i < mode->bindings->length; ++i) { free_binding(mode->bindings->items[i]); } list_free(mode->bindings); free(mode); }
Binding *free_binding(Binding *binding) { if (binding->reference_count > 1L) { binding->reference_count--; return binding->parent; } Binding *parent = binding->parent; Entry *entry = binding->first; while (entry != NULL) { Entry *next = entry->next; destroy(free_entry(entry)); entry = next; } free_binding(binding->parent); free(binding); return parent; }
static void free_binding (krb5_context context, krb5_config_binding *b) { krb5_config_binding *next_b; while (b) { free (b->name); if (b->type == krb5_config_string) free (b->u.string); else if (b->type == krb5_config_list) free_binding (context, b->u.list); else krb5_abortx(context, "unknown binding type (%d) in free_binding", b->type); next_b = b->next; free (b); b = next_b; } }
krb5_error_code KRB5_LIB_FUNCTION krb5_config_file_free (krb5_context context, krb5_config_section *s) { free_binding (context, s); return 0; }