diff --git a/src/core/coap/coap_message.cpp b/src/core/coap/coap_message.cpp index c8c336668..edf4584b6 100644 --- a/src/core/coap/coap_message.cpp +++ b/src/core/coap/coap_message.cpp @@ -45,7 +45,7 @@ namespace Coap { void Message::Init(void) { - memset(&GetHelpData(), 0, sizeof(GetHelpData())); + GetHelpData().Clear(); SetVersion(kVersion1); SetOffset(0); GetHelpData().mHeaderLength = kMinHeaderLength; @@ -211,7 +211,7 @@ const otCoapOption *Message::GetFirstOption(void) { const otCoapOption *option = NULL; - memset(&GetHelpData().mOption, 0, sizeof(GetHelpData().mOption)); + GetHelpData().ClearOption(); VerifyOrExit(GetLength() - GetHelpData().mHeaderOffset >= GetOptionStart()); @@ -346,7 +346,7 @@ otError Message::ParseHeader(void) sizeof(GetHelpData()) + static_cast((reinterpret_cast(&GetHelpData()) - mBuffer.mHead.mData))); - memset(&GetHelpData(), 0, sizeof(GetHelpData())); + GetHelpData().Clear(); GetHelpData().mHeaderOffset = GetOffset(); Read(GetHelpData().mHeaderOffset, sizeof(GetHelpData().mHeader), &GetHelpData().mHeader); diff --git a/src/core/coap/coap_message.hpp b/src/core/coap/coap_message.hpp index 5f110dfe9..de13f5062 100644 --- a/src/core/coap/coap_message.hpp +++ b/src/core/coap/coap_message.hpp @@ -585,6 +585,9 @@ private: */ struct HelpData { + void Clear(void) { memset(this, 0, sizeof(*this)); } + void ClearOption(void) { memset(&mOption, 0, sizeof(mOption)); } + Header mHeader; otCoapOption mOption; uint16_t mNextOptionOffset; ///< The byte offset for the next CoAP Option