rem: free(path);
add: wfree(path);
context: wScreenRestoreState(WScreen *scr){    proplist_t state;    char *path;    #ifndef LITE    OpenRootMenu(scr, -10000, -10000, False);    wMenuUnmap(scr->root_menu);#endif    make_keys();    if (wScreenCount == 1)	path = wdefaultspathfordomain("WMState");    else {	char buf[16];	sprintf(buf, "WMState.%i", scr->screen);	path = wdefaultspathfordomain(buf);    }    scr->session_state = PLGetProplistWithPath(path);    free(path);    if (!scr->session_state && wScreenCount>1) {	char buf[16];	sprintf(buf, "WMState.%i", scr->screen);	path = wdefaultspathfordomain(buf);	scr->session_state = PLGetProplistWithPath(path);	free(path);    }    if (!wPreferences.flags.noclip) {        state = PLGetDictionaryEntry(scr->session_state, dClip);        scr->clip_icon = wClipRestoreState(scr, state);    }    wWorkspaceRestoreState(scr);#ifdef VIRTUAL_DESKTOP        /*         *      * create inputonly windows at the border of screen         *           */        wWorkspaceManageEdge(scr);#endif    if (!wPreferences.flags.nodock) {        state = PLGetDictionaryEntry(scr->session_state, dDock);        scr->dock = wDockRestoreState(scr, state, WM_DOCK);    }    wScreenUpdateUsableArea(scr);}