From a768583bffb06d6018b2630c5b1eed0d30afe2fc Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 20 Jan 2024 12:14:22 -0500 Subject: [PATCH] GUI: fix paste overflow undo corruption, part 3 garbage collection --- src/gui/editing.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/gui/editing.cpp b/src/gui/editing.cpp index abce533a9..183560191 100644 --- a/src/gui/editing.cpp +++ b/src/gui/editing.cpp @@ -104,7 +104,7 @@ void FurnaceGUI::prepareUndo(ActionType action, UndoRegion region) { auto it=oldPatMap.find(id); if (it==oldPatMap.end()) { p=oldPatMap[id]=new DivPattern; - logV("oldPatMap: allocating for %.4x",id); + //logV("oldPatMap: allocating for %.4x",id); } else { p=it->second; } @@ -249,6 +249,12 @@ void FurnaceGUI::makeUndo(ActionType action, UndoRegion region) { if (shallWalk) { e->walkSong(loopOrder,loopRow,loopEnd); } + + // garbage collection + for (std::pair i: oldPatMap) { + delete i.second; + } + oldPatMap.clear(); } void FurnaceGUI::doSelectAll() {