void DestroyStatementList(struct StatementList *sl) { register unsigned long c,len; if (sl == NULL) return; assert(sl->ref_count!=0); if (sl->ref_count < MAXREFCOUNT) sl->ref_count--; if (sl->ref_count==0) { len = gl_length(sl->l); for(c=1;c<=len;c++) DestroyStatement((struct Statement *)gl_fetch(sl->l,c)); gl_destroy(sl->l); ascfree((char *)sl); } }
/** Free resources of a Form @param Form Pointer of the Form @return None. **/ VOID DestroyForm ( IN OUT FORM_BROWSER_FORM *Form ) { LIST_ENTRY *Link; FORM_BROWSER_STATEMENT *Statement; // // Free Statements/Questions // while (!IsListEmpty (&Form->StatementListHead)) { Link = GetFirstNode (&Form->StatementListHead); Statement = FORM_BROWSER_STATEMENT_FROM_LINK (Link); RemoveEntryList (&Statement->Link); DestroyStatement (Statement); } // // Free this Form // gBS->FreePool (Form); }