diff options
Diffstat (limited to 'decoder/source/c_api/ocsd_c_api.cpp')
-rw-r--r-- | decoder/source/c_api/ocsd_c_api.cpp | 8 |
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; } |