mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-19 12:28:22 +01:00
Coverity: fix wmmenugen resource leak
This commit is contained in:
committed by
Carlos R. Mafra
parent
0ccc5bbde7
commit
4b1aee3e79
@@ -275,45 +275,46 @@ static void assemblePLMenuFunc(WMTreeNode *aNode, void *data)
|
|||||||
if (!wm->CmdLine) { /* new submenu */
|
if (!wm->CmdLine) { /* new submenu */
|
||||||
WMAddToArray(plMenuNodes, WMCreatePLArray(WMCreatePLString(wm->Name), NULL));
|
WMAddToArray(plMenuNodes, WMCreatePLArray(WMCreatePLString(wm->Name), NULL));
|
||||||
} else { /* new menu item */
|
} else { /* new menu item */
|
||||||
|
WMPropList *tmp1, *tmp2;
|
||||||
pl = WMPopFromArray(plMenuNodes);
|
pl = WMPopFromArray(plMenuNodes);
|
||||||
if (wm->Flags & F_RESTART_OTHER) { /* RESTART, somewm */
|
if (wm->Flags & F_RESTART_OTHER) { /* RESTART, somewm */
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
|
WMPropList *tmp3;
|
||||||
|
|
||||||
memset(buf, 0, sizeof(buf));
|
memset(buf, 0, sizeof(buf));
|
||||||
snprintf(buf, sizeof(buf), "%s %s", _("Restart"), wm->Name);
|
snprintf(buf, sizeof(buf), "%s %s", _("Restart"), wm->Name);
|
||||||
WMAddToPLArray(pl, WMCreatePLArray(
|
|
||||||
WMCreatePLString(buf),
|
tmp1 = WMCreatePLString(buf);
|
||||||
WMCreatePLString("RESTART"),
|
tmp2 = WMCreatePLString("RESTART");
|
||||||
WMCreatePLString(wm->CmdLine),
|
tmp3 = WMCreatePLString(wm->CmdLine);
|
||||||
NULL)
|
WMAddToPLArray(pl, WMCreatePLArray(tmp1, tmp2, tmp3, NULL));
|
||||||
);
|
WMReleasePropList(tmp3);
|
||||||
} else if (wm->Flags & F_RESTART_SELF) {/* RESTART */
|
} else if (wm->Flags & F_RESTART_SELF) {/* RESTART */
|
||||||
WMAddToPLArray(pl, WMCreatePLArray(
|
tmp1 = WMCreatePLString(_("Restart Window Maker"));
|
||||||
WMCreatePLString(_("Restart Window Maker")),
|
tmp2 = WMCreatePLString("RESTART");
|
||||||
WMCreatePLString("RESTART"),
|
WMAddToPLArray(pl, WMCreatePLArray(tmp1, tmp2, NULL));
|
||||||
NULL)
|
|
||||||
);
|
|
||||||
} else if (wm->Flags & F_QUIT) { /* EXIT */
|
} else if (wm->Flags & F_QUIT) { /* EXIT */
|
||||||
WMAddToPLArray(pl, WMCreatePLArray(
|
tmp1 = WMCreatePLString(_("Exit Window Maker"));
|
||||||
WMCreatePLString(_("Exit Window Maker")),
|
tmp2 = WMCreatePLString("EXIT");
|
||||||
WMCreatePLString("EXIT"),
|
WMAddToPLArray(pl, WMCreatePLArray(tmp1, tmp2, NULL));
|
||||||
NULL)
|
|
||||||
);
|
|
||||||
} else { /* plain simple command */
|
} else { /* plain simple command */
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
|
WMPropList *tmp3;
|
||||||
|
|
||||||
memset(buf, 0, sizeof(buf));
|
memset(buf, 0, sizeof(buf));
|
||||||
if (wm->Flags & F_TERMINAL) /* XXX: quoting! */
|
if (wm->Flags & F_TERMINAL) /* XXX: quoting! */
|
||||||
snprintf(buf, sizeof(buf), "%s -e \"%s\"", terminal, wm->CmdLine);
|
snprintf(buf, sizeof(buf), "%s -e \"%s\"", terminal, wm->CmdLine);
|
||||||
else
|
else
|
||||||
snprintf(buf, sizeof(buf), "%s", wm->CmdLine);
|
snprintf(buf, sizeof(buf), "%s", wm->CmdLine);
|
||||||
|
tmp1 = WMCreatePLString(wm->Name);
|
||||||
WMAddToPLArray(pl, WMCreatePLArray(
|
tmp2 = WMCreatePLString("SHEXEC");
|
||||||
WMCreatePLString(wm->Name),
|
tmp3 = WMCreatePLString(buf);
|
||||||
WMCreatePLString("SHEXEC"),
|
WMAddToPLArray(pl, WMCreatePLArray(tmp1, tmp2, tmp3, NULL));
|
||||||
WMCreatePLString(buf),
|
WMReleasePropList(tmp3);
|
||||||
NULL)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
WMReleasePropList(tmp1);
|
||||||
|
WMReleasePropList(tmp2);
|
||||||
|
|
||||||
WMAddToArray(plMenuNodes, pl);
|
WMAddToArray(plMenuNodes, pl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user