static void freeAstList(MList list) { MListNode current = list->head; while (current != NULL) { MListNode next = current->next; freeAst(current->v); free(current); current = next; } free(list); }
void freeAst(pAstNode tree) { if (!tree) { die("freeAst: argument can not point to NULL."); } if (tree->payload != NULL) { freePayload(tree->payload); } for (unsigned int index = 0; index < tree->numOfChildren; index++) { freeAst(getAstChild(tree, index)); } free(tree); }