+ for (; tree; tree = tree->next) {
+ tmp = (CLNode*)tree->data;
+ switch(tmp->type) {
+ case CL_ID:
+ case CL_STR:
+ g_free(tmp->u.str);
+ break;
+ case CL_LIST:
+ case CL_BLOCK:
+ case CL_LISTBLOCK:
+ g_free(tmp->u.lb.id);
+ cl_tree_free(tmp->u.lb.list);
+ cl_tree_free(tmp->u.lb.block);
+ break;
+ default:
+ break;
+ }
+ g_free(tmp);
+ }
+ g_list_free(tree);