void upb_descreader_uninit(upb_descreader *r) { free(r->name); upb_deflist_uninit(&r->defs); free(r->default_string); while (r->stack_len > 0) { upb_descreader_frame *f = &r->stack[--r->stack_len]; free(f->name); } }
static void upb_symtab_free(upb_symtab *s) { _upb_symtab_free(&s->symtab); for (uint32_t i = 0; i < s->olddefs.len; i++) { upb_def *d = s->olddefs.defs[i]; assert(upb_atomic_read(&d->refcount) == 0); upb_def_free(d); } upb_rwlock_destroy(&s->lock); upb_deflist_uninit(&s->olddefs); free(s); }