rem: free(entry->text);
add: wfree(entry->text);
context: updateMakeShortcutMenu(WMenu *menu, WWindow *wwin){    WMenu *smenu = menu->cascades[menu->entries[MC_SHORTCUT]->cascade];    int i;    char *buffer;    KeyCode kcode;    if (!smenu)	return;        buffer = wmalloc(strlen(_("Set Shortcut"))+16);    for (i=WO_ENTRIES; i<smenu->entry_no; i++) {	char *tmp;	int shortcutNo = i-WO_ENTRIES;	WMenuEntry *entry = smenu->entries[i];	WMBag *shortSelWindows = wwin->screen_ptr->shortcutWindows[shortcutNo];	sprintf(buffer, "%s %i", _("Set Shortcut"), shortcutNo+1);		if (!shortSelWindows) {	    entry->flags.indicator_on = 0;	} else {	    entry->flags.indicator_on = 1;	    if (WMCountInBag(shortSelWindows, wwin))		entry->flags.indicator_type = MI_DIAMOND;	    else		entry->flags.indicator_type = MI_CHECK;	}	if (strcmp(buffer, entry->text)!=0) {	    free(entry->text);	    entry->text = wstrdup(buffer);	    smenu->flags.realized = 0;	}	kcode = wKeyBindings[WKBD_WINDOW1+shortcutNo].keycode;	if (kcode) {	    if ((tmp = XKeysymToString(XKeycodeToKeysym(dpy, kcode, 0)))		&& (!entry->rtext || strcmp(tmp, entry->rtext)!=0)) {		if (entry->rtext)		    free(entry->rtext);		entry->rtext = wstrdup(tmp);		smenu->flags.realized = 0;	    }	    wMenuSetEnabled(smenu, i, True);	} else {	    wMenuSetEnabled(smenu, i, False);	    if (entry->rtext) {		free(entry->rtext);		entry->rtext = NULL;		smenu->flags.realized = 0;	    }	}	entry->clientdata = wwin;    }    free(buffer);    if (!smenu->flags.realized)	wMenuRealize(smenu);}