opencsd: etmv4: fix error message on commit overflow.
Error message using incorrect trace index when commit overflow occurs.
Fix to avoid using previously deleted trace element for index.
Signed-off-by: Mike Leach <mike.leach@linaro.org>
diff --git a/decoder/source/etmv4/trc_pkt_decode_etmv4i.cpp b/decoder/source/etmv4/trc_pkt_decode_etmv4i.cpp
index 42427b9..2eb6cbc 100644
--- a/decoder/source/etmv4/trc_pkt_decode_etmv4i.cpp
+++ b/decoder/source/etmv4/trc_pkt_decode_etmv4i.cpp
@@ -507,6 +507,7 @@
bool bPause = false; // pause commit operation
bool bPopElem = true; // do we remove the element from the stack (multi atom elements may need to stay!)
int num_commit_req = m_P0_commit;
+ ocsd_trc_index_t err_idx = 0;
Complete = true; // assume we exit due to completion of commit operation
@@ -517,8 +518,9 @@
if(m_P0_stack.size() > 0)
{
pElem = m_P0_stack.back(); // get oldest element
-
- switch(pElem->getP0Type())
+ err_idx = pElem->getRootIndex(); // save index in case of error.
+
+ switch (pElem->getP0Type())
{
// indicates a trace restart - beginning of trace or discontinuiuty
case P0_TRC_ON:
@@ -661,10 +663,6 @@
else
{
// too few elements for commit operation - decode error.
- ocsd_trc_index_t err_idx = 0;
- if(pElem)
- err_idx = pElem->getRootIndex();
-
resp = OCSD_RESP_FATAL_INVALID_DATA;
LogError(ocsdError(OCSD_ERR_SEV_ERROR,OCSD_ERR_COMMIT_PKT_OVERRUN,err_idx,m_CSID,"Not enough elements to commit"));
bPause = true;