rem: free(*menuPath);
add: wfree(*menuPath);
context: WRootMenuData *ReopenRootMenu(time_t *checkTime, 			      char **menuPath,			      time_t *menuTimestamp){    proplist pl;    struct stat stat_buf;    char *path;        if (stat(path, &stat_buf) < 0) {	wsyserror(_("could not stat() menu file '%s'"));	return NULL;    }    if (*menuTime >= stat_buf.st_mtime && *checkTime != 0) {	/* no changes in WMRootMenu, see if the contents changed */	if (*menuPath != NULL) {	    return OpenMenu(*menuPath, menuTimestamp);	} else {	    return NULL;	}    }    *checkTime = stat_buf.st_mtime;    pl = ReadProplistFromFile(path);    if (!pl) {	wwarning(_("could not load domain %s from user defaults database"),		 "WMRootMenu");	return NULL;    }    if (PLIsString(pl)) {	char *tmp;	char *path;	Bool menu_is_default = False;	tmp = wexpandpath(PLGetString(pl));	path = getLocalizedMenuFile(tmp);	if (!path) {	    path = wfindfile(DEF_CONFIG_PATHS, tmp);	}	if (!path) {	    wwarning(_("could not find menu file '%s' referenced in WMRootMenu"),		     tmp);	    path = wfindfile(DEF_CONFIG_PATHS, DEF_MENU_FILE);	    menu_is_default = True;	}	if (!path) {	    wwarning(_("could not find any usable menu files. Please check '%s'"),		      tmp);	    free(tmp);	    return NULL;	}		free(tmp);		if (*menuPath) {	    if (strcmp(*menuPath, path) != 0) {		*menuTimestamp = 0;		free(*menuPath);		*menuPath = path;				if (menu_is_default) {		    wwarning(_("using default menu file \"%s\" as the menu referenced in WMRootMenu could not be found "),			     path);		}	    } else {		/* the menu path didn't change, but the 		 * pointed file might have changed, so we don't return 		 */	    }	} else {	    *menuPath = path;	}	return OpenMenu(*menuPath, menuTimestamp);    } else if (PLIsArray(pl)) {	*menuTimestamp = stat_buf.st_mtime;	return pl_openMenu(pl);    } else {	wwarning(_("invalid content in menu file '%s'.\nIt should either be a property list menu or the path to the file, enclosed in \"."), 		 path);	return NULL;    }}