rem: free(menu);
add: wfree(menu);
context: wMenuDestroy(WMenu *menu, int recurse){    int i;    WMRemoveNotificationObserver(menu);        /* remove any pending timers */    if (menu->timer)	WMDeleteTimerHandler(menu->timer);    menu->timer = NULL;        /* call destroy handler */    if (menu->on_destroy)	(*menu->on_destroy)(menu);        /* Destroy items if this menu own them. If this is the "brother" menu,     * leave them alone as it is shared by them.     */    if (!menu->flags.brother) {	for (i=0; i<menu->entry_no; i++) {	    free(menu->entries[i]->text);	    if (menu->entries[i]->rtext)	      free(menu->entries[i]->rtext);#ifdef USER_MENU	    if (menu->entries[i]->instances){		  PLRelease(menu->entries[i]->instances);		}#endif /* USER_MENU */	    if (menu->entries[i]->free_cdata && menu->entries[i]->clientdata) {		(*menu->entries[i]->free_cdata)(menu->entries[i]->clientdata);	    }	    free(menu->entries[i]);	}	if (recurse) {	    for (i=0; i<menu->cascade_no; i++) {		if (menu->cascades[i]) {		    if (menu->cascades[i]->flags.brother)		      wMenuDestroy(menu->cascades[i]->brother, recurse);		    else		      wMenuDestroy(menu->cascades[i], recurse);		}	    }	}		if (menu->entries)	    free(menu->entries);	    }    FREE_PIXMAP(menu->menu_texture_data);        if (menu->cascades)      free(menu->cascades);    wCoreDestroy(menu->menu);    wFrameWindowDestroy(menu->frame);        /* destroy copy of this menu */    if (!menu->flags.brother && menu->brother)	wMenuDestroy(menu->brother, False);        free(menu);}