aboutsummaryrefslogtreecommitdiff
path: root/decoder/source/c_api/ocsd_c_api.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'decoder/source/c_api/ocsd_c_api.cpp')
-rw-r--r--decoder/source/c_api/ocsd_c_api.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/decoder/source/c_api/ocsd_c_api.cpp b/decoder/source/c_api/ocsd_c_api.cpp
index 750c847..2cc2334 100644
--- a/decoder/source/c_api/ocsd_c_api.cpp
+++ b/decoder/source/c_api/ocsd_c_api.cpp
@@ -256,8 +256,16 @@ OCSD_C_API ocsd_err_t ocsd_dt_set_gen_elem_outfn(const dcd_tree_handle_t handle,
{
GenTraceElemCBObj * pCBObj = new (std::nothrow)GenTraceElemCBObj(pFn, p_context);
+ ITrcGenElemIn* pCurrIF;
+
if(pCBObj)
{
+ /* delete any previous element we might have set */
+ pCurrIF = ((DecodeTree*)handle)->getGenTraceElemOutI();
+ if (pCurrIF)
+ delete static_cast<GenTraceElemCBObj*>(pCurrIF);
+
+ /* set the new one */
((DecodeTree *)handle)->setGenTraceElemOutI(pCBObj);
return OCSD_OK;
}