in src/nanoarrow/schema.c [25:64]
static void ArrowSchemaRelease(struct ArrowSchema* schema) {
if (schema->format != NULL) ArrowFree((void*)schema->format);
if (schema->name != NULL) ArrowFree((void*)schema->name);
if (schema->metadata != NULL) ArrowFree((void*)schema->metadata);
// This object owns the memory for all the children, but those
// children may have been generated elsewhere and might have
// their own release() callback.
if (schema->children != NULL) {
for (int64_t i = 0; i < schema->n_children; i++) {
if (schema->children[i] != NULL) {
if (schema->children[i]->release != NULL) {
schema->children[i]->release(schema->children[i]);
}
ArrowFree(schema->children[i]);
}
}
ArrowFree(schema->children);
}
// This object owns the memory for the dictionary but it
// may have been generated somewhere else and have its own
// release() callback.
if (schema->dictionary != NULL) {
if (schema->dictionary->release != NULL) {
schema->dictionary->release(schema->dictionary);
}
ArrowFree(schema->dictionary);
}
// private data not currently used
if (schema->private_data != NULL) {
ArrowFree(schema->private_data);
}
schema->release = NULL;
}