diff --git a/src/core/common/heap_data.cpp b/src/core/common/heap_data.cpp index 5060fde34..28e1b2f32 100644 --- a/src/core/common/heap_data.cpp +++ b/src/core/common/heap_data.cpp @@ -120,10 +120,9 @@ Error Data::UpdateBuffer(uint16_t aNewLength) VerifyOrExit(aNewLength != mData.GetLength()); - Heap::Free(mData.GetBytes()); - if (aNewLength == 0) { + Heap::Free(mData.GetBytes()); mData.Init(nullptr, 0); } else @@ -131,6 +130,7 @@ Error Data::UpdateBuffer(uint16_t aNewLength) uint8_t *newBuffer = static_cast(Heap::CAlloc(aNewLength, sizeof(uint8_t))); VerifyOrExit(newBuffer != nullptr, error = kErrorNoBufs); + Heap::Free(mData.GetBytes()); mData.Init(newBuffer, aNewLength); }