diff --git a/src/core/basicfb.cpp b/src/core/basicfb.cpp index f895a13e..0a935a24 100644 --- a/src/core/basicfb.cpp +++ b/src/core/basicfb.cpp @@ -160,12 +160,19 @@ size_t CBasicFB::getToStringBufferSize() const { } #ifdef FORTE_TRACE_CTF -void CBasicFB::traceInstanceData() { +size_t internalFBCount(CBasicFB* me) { + size_t i = 0; + for(CBasicFB::TFBContainerList::iterator it(me->getChildren().begin()); it != me->getChildren().end(); ++it){ + ++i; + } + return i; +} +void CBasicFB::traceInstanceData() { std::vector inputs(mInterfaceSpec->mNumDIs); std::vector outputs(mInterfaceSpec->mNumDOs); std::vector internals(cmVarInternals ? cmVarInternals->mNumIntVars : 0); - std::vector internalFbs(getInternalFBNum()); + std::vector internalFbs(internalFBCount(this)); std::vector inputs_c_str(inputs.size()); std::vector outputs_c_str(outputs.size()); std::vector internals_c_str(internals.size()); @@ -195,12 +202,14 @@ void CBasicFB::traceInstanceData() { internals_c_str[i] = valueString.c_str(); } - for(TPortId i = 0; i < internalFbs.size(); ++i) { - CFunctionBlock *value = getInternalFB(i); + TPortId i = 0; + for(TFBContainerList::iterator it(getChildren().begin()); it != getChildren().end(); ++it){ + CFunctionBlock &value = static_cast(**it); std::string &valueString = internalFbs[i]; - valueString.reserve(value->getToStringBufferSize()); - value->toString(valueString.data(), valueString.capacity()); + valueString.reserve(value.getToStringBufferSize()); + value.toString(valueString.data(), valueString.capacity()); internalFbs_c_str[i] = valueString.c_str(); + ++i; } barectf_default_trace_instanceData(getResource()->getTracePlatformContext().getContext(),