rem: free(tmp);
add: wfree(tmp);
context: processData(char *title, ItemData *data){    proplist_t item;    char *s1;    static char *pscut = NULL;    static char *pomenu = NULL;    int i;    if (!pscut) {	pscut = PLMakeString("SHORTCUT");	pomenu = PLMakeString("OPEN_MENU");    }    item = PLMakeArrayFromElements(PLMakeString(title), NULL);        switch (data->type) {     case ExecInfo:#if 1	if (strpbrk(data->param.exec.command, "&$*|><?`=")) {	    s1 = "SHEXEC";	} else {	    s1 = "EXEC";	}#else	 	s1 = "SHEXEC";#endif	if (notblank(data->param.exec.shortcut)) {	    PLAppendArrayElement(item, pscut);	    PLAppendArrayElement(item, 				 PLMakeString(data->param.exec.shortcut));	}	PLAppendArrayElement(item, PLMakeString(s1));	PLAppendArrayElement(item, PLMakeString(data->param.exec.command));	break;     case CommandInfo:	if (notblank(data->param.command.shortcut)) {	    PLAppendArrayElement(item, pscut);	    PLAppendArrayElement(item, 				 PLMakeString(data->param.command.shortcut));	}		i = data->param.command.command;		PLAppendArrayElement(item, PLMakeString(commandNames[i]));		switch (i) {	 case 3:	 case 4:	    if (data->param.command.parameter) {		PLAppendArrayElement(item, 				     PLMakeString(data->param.command.parameter));	    }	    break;	 case 6: /* restart */	    if (data->param.command.parameter) {		PLAppendArrayElement(item, 				     PLMakeString(data->param.command.parameter));	    }	    break;	}		break;	     case PipeInfo:	PLAppendArrayElement(item, pomenu);	s1 = wstrappend("| ", data->param.pipe.command);	PLAppendArrayElement(item, PLMakeString(s1));	free(s1);	break;	     case ExternalInfo:	PLAppendArrayElement(item, pomenu);	PLAppendArrayElement(item, PLMakeString(data->param.external.path));	break;	     case DirectoryInfo:	{	    int l;	    char *tmp;	    	    l = strlen(data->param.directory.directory);	    l += strlen(data->param.directory.command);	    l += 32;	    PLAppendArrayElement(item, pomenu);	    	    tmp = wmalloc(l);	    sprintf(tmp, "%s%s WITH %s",		    data->param.directory.stripExt ? "-noext " : "",		    data->param.directory.directory,		    data->param.directory.command);	    	    PLAppendArrayElement(item, PLMakeString(tmp));	    free(tmp);	}	break;	     case WSMenuInfo:	PLAppendArrayElement(item, PLMakeString("WORKSPACE_MENU"));	break;     default:	assert(0);	break;    }        return item;}