rem: while (lPtr->items!=NULL) { itemPtr = lPtr->items; if (itemPtr->text) free(itemPtr->text);  lPtr->items = itemPtr->nextPtr; free(itemPtr);
add: for (i = 0; i < WMGetBagItemCount(lPtr->items); i++) { item = WMGetFromBag(lPtr->items, i); free(item->text); free(item);
context: destroyList(List *lPtr){    WMListItem *itemPtr;        if (lPtr->idleID) 	WMDeleteIdleHandler(lPtr->idleID);    lPtr->idleID = NULL;    while (lPtr->items!=NULL) {	itemPtr = lPtr->items;	if (itemPtr->text)	    free(itemPtr->text);		lPtr->items = itemPtr->nextPtr;	free(itemPtr);    }        free(lPtr);}