rem: free(args);
add: wfree(args);
context: readMenuFile(WScreen *scr, char *file_name){    WMenu *menu=NULL;    FILE *file = NULL;    char linebuf[MAXLINE];    char title[MAXLINE];    char shortcut[MAXLINE];    char command[MAXLINE];    char params[MAXLINE];    char *line;#ifdef USECPP    char *args;    int cpp = 0;#endif#ifdef USECPP    if (!wPreferences.flags.nocpp) {	args = MakeCPPArgs(file_name);	if (!args) {	    wwarning(_("could not make arguments for menu file preprocessor"));	} else {	    sprintf(command, "%s %s %s", CPP_PATH, args, file_name);	    free(args);	    file = popen(command, "r");	    if (!file) {		wsyserror(_("%s:could not open/preprocess menu file"), 			  file_name);	    } else {		cpp = 1;	    }	}    }#endif /* USECPP */    if (!file) {	file = fopen(file_name, "r");	if (!file) {	    wsyserror(_("%s:could not open menu file"), file_name);	    return NULL;	}    }        while (!IsEof(file)) {	if (!fgets(linebuf, MAXLINE, file))	    break;	line = cropline(linebuf);	if (line[0]==0 || line[0]=='#' || (line[0]=='/' && line[1]=='/')) 	  continue;	separateline(line, title, command, params, shortcut);		if (!command[0]) {	    wwarning(_("%s:missing command in menu config: %s"), file_name,		     line);	    break;	}	if (strcasecmp(command, "MENU")==0) {	    menu = wMenuCreate(scr, title, True);	    menu->on_destroy = removeShortcutsForMenu;	    if (!parseCascade(scr, menu, file, file_name)) {		wMenuDestroy(menu, True);	    }	    break;	} else {	    wwarning(_("%s:invalid menu file. MENU command is missing"), 		     file_name);	    break;	}    }    #ifdef CPP    if (cpp) {	if (pclose(file)==-1) {	    wsyserror(_("error reading preprocessed menu data"));	}    } else {	fclose(file);    }#else    fclose(file);#endif        return menu;}