int jsgf_rule_free(jsgf_rule_t * rule) { if (rule == NULL) return 0; if (--rule->refcnt > 0) return rule->refcnt; jsgf_rhs_free(rule->rhs); ckd_free(rule->name); ckd_free(rule); return 0; }
static void jsgf_rhs_free(jsgf_rhs_t *rhs) { gnode_t *gn; if (rhs == NULL) return; jsgf_rhs_free(rhs->alt); for (gn = rhs->atoms; gn; gn = gnode_next(gn)) jsgf_atom_free(gnode_ptr(gn)); glist_free(rhs->atoms); ckd_free(rhs); }