diff --git a/src/core/thread/mle_router.cpp b/src/core/thread/mle_router.cpp index 365625af2..e270d0b0a 100644 --- a/src/core/thread/mle_router.cpp +++ b/src/core/thread/mle_router.cpp @@ -3519,7 +3519,13 @@ otError MleRouter::RestoreChildren(void) reinterpret_cast(&childInfo), &length)); VerifyOrExit(length >= sizeof(childInfo), error = OT_ERROR_PARSE); - VerifyOrExit((child = NewChild()) != NULL, error = OT_ERROR_NO_BUFS); + child = FindChild(*static_cast(&childInfo.mExtAddress)); + + if (child == NULL) + { + VerifyOrExit((child = NewChild()) != NULL, error = OT_ERROR_NO_BUFS); + } + memset(child, 0, sizeof(*child)); child->SetExtAddress(*static_cast(&childInfo.mExtAddress));