rem: free(cmdline);
add: wfree(cmdline);
context: execCommand(WAppIcon *btn, char *command, WSavedState *state){    WScreen *scr = btn->icon->core->screen_ptr;    pid_t pid;    char **argv;    int argc;    char *cmdline;    cmdline = ExpandOptions(scr, command);    if (scr->flags.dnd_data_convertion_status || !cmdline) {	if (cmdline)	    free(cmdline);        if (state)            free(state);        return 0;    }    wtokensplit(cmdline, &argv, &argc);    if (argv==NULL) {        if (cmdline)            free(cmdline);        if (state)            free(state);	return 0;    }    if ((pid=fork())==0) {	char **args;	int i;	SetupEnvironment(scr);#ifdef HAVE_SETPGID        setpgid(0, 0);#endif	args = malloc(sizeof(char*)*(argc+1));	if (!args)	    exit(111);	for (i=0; i<argc; i++) {	    args[i] = argv[i];	}	args[argc] = NULL;	execvp(argv[0], args);	exit(111);    }    while (argc > 0)        free(argv[--argc]);    free(argv);    if (pid > 0) {        if (!state) {            state = wmalloc(sizeof(WSavedState));            memset(state, 0, sizeof(WSavedState));            state->hidden = -1;            state->miniaturized = -1;            state->shaded = -1;            if (btn->dock==scr->dock || btn->omnipresent)                state->workspace = -1;            else                state->workspace = scr->current_workspace;        }        wWindowAddSavedState(btn->wm_instance, btn->wm_class, cmdline, pid,			     state);        wAddDeathHandler(pid, (WDeathHandler*)trackDeadProcess,                         btn->dock);    } else if (state) {        free(state);    }    free(cmdline);    return pid;}