1
0
mirror of https://github.com/gryf/wmaker.git synced 2025-12-18 20:10:29 +01:00

Coverity: fix wmmenugen resource leak

This commit is contained in:
David Maciejak
2023-03-02 22:16:43 +08:00
committed by Carlos R. Mafra
parent 0ccc5bbde7
commit 4b1aee3e79

View File

@@ -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);
} }