From 805d7ed5dfe97a39b8b0816fd5eeed8731dc4936 Mon Sep 17 00:00:00 2001 From: Dmitriy Tretyakov Date: Mon, 23 Sep 2024 09:41:42 +0300 Subject: [PATCH] Fix issue 2307 In case sso use memmove to avoid memory overlapping issues --- include/rapidjson/document.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/rapidjson/document.h b/include/rapidjson/document.h index f183749..4b2d723 100644 --- a/include/rapidjson/document.h +++ b/include/rapidjson/document.h @@ -2445,13 +2445,14 @@ private: data_.f.flags = kShortStringFlag; data_.ss.SetLength(s.length); str = data_.ss.str; + std::memmove(str, s, s.length * sizeof(Ch)); } else { data_.f.flags = kCopyStringFlag; data_.s.length = s.length; str = static_cast(allocator.Malloc((s.length + 1) * sizeof(Ch))); SetStringPointer(str); + std::memcpy(str, s, s.length * sizeof(Ch)); } - std::memcpy(str, s, s.length * sizeof(Ch)); str[s.length] = '\0'; }