aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Leach <mike.leach@linaro.org>2023-01-19 16:36:55 +0000
committerMike Leach <mike.leach@linaro.org>2023-01-19 16:36:55 +0000
commitfbfc558e0775a8c3085a4aefa0b6aaf8192749aa (patch)
tree4da18ef6624aceda5def3fcdde248179e226c4a1
parentf1afa1152da9bbcb201181f4ef53e4eba06c8215 (diff)
downloadOpenCSD-fbfc558e0775a8c3085a4aefa0b6aaf8192749aa.tar.gz
opencsd: etm4: Fix memory leak in mispredict handling. (github #52)
Mispredict handler was removing unneeded addresses between the mispredict packet and the atom packet, without deleting the item afterwards. Erase now also deletes the unwanted item. Fixes issue #52 from github Signed-off-by: Mike Leach <mike.leach@linaro.org>
-rw-r--r--decoder/source/etmv4/trc_etmv4_stack_elem.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/decoder/source/etmv4/trc_etmv4_stack_elem.cpp b/decoder/source/etmv4/trc_etmv4_stack_elem.cpp
index 1207444..71888f7 100644
--- a/decoder/source/etmv4/trc_etmv4_stack_elem.cpp
+++ b/decoder/source/etmv4/trc_etmv4_stack_elem.cpp
@@ -172,6 +172,10 @@ void EtmV4P0Stack::erase_curr_from_front()
erase_iter = m_iter;
erase_iter--;
m_P0_stack.erase(erase_iter);
+
+ // explicitly delete the item here as the caller can no longer reference it.
+ // fixes memory leak from github issue #52
+ delete *erase_iter;
}