Ejemplo n.º 1
0
void kp_obj_free_gclist(ktap_state *ks, ktap_gcobject *o)
{
	while (o) {
		ktap_gcobject *next;

		next = gch(o)->next;
		switch (gch(o)->tt) {
		case KTAP_TYPE_TABLE:
			kp_tab_free(ks, (ktap_tab *)o);
			break;
		case KTAP_TYPE_PROTO:
			free_proto(ks, (ktap_proto *)o);
			break;
		case KTAP_TYPE_UPVAL:
			kp_freeupval(ks, (ktap_upval *)o);
			break;
		case KTAP_TYPE_PTABLE:
			kp_ptab_free(ks, (ktap_ptab *)o);
			break;
		case KTAP_TYPE_RAW:
			kp_free(ks, ((ktap_rawobj *)o)->v);
			break;
		default:
			kp_free(ks, o);
		}
		o = next;
	}
}
Ejemplo n.º 2
0
void kp_obj_free_gclist(ktap_state_t *ks, ktap_obj_t *o)
{
	while (o) {
		ktap_obj_t *next;

		next = gch(o)->nextgc;
		switch (gch(o)->gct) {
		case ~KTAP_TTAB:
			kp_tab_free(ks, (ktap_tab_t *)o);
			break;
		case ~KTAP_TUPVAL:
			kp_freeupval(ks, (ktap_upval_t *)o);
			break;
		default:
			kp_free(ks, o);
		}
		o = next;
	}
}