diff --git a/Code/Framework/AzCore/AzCore/DOM/Backends/JSON/JsonBackend.h b/Code/Framework/AzCore/AzCore/DOM/Backends/JSON/JsonBackend.h index af8e4e114c..45825ff92d 100644 --- a/Code/Framework/AzCore/AzCore/DOM/Backends/JSON/JsonBackend.h +++ b/Code/Framework/AzCore/AzCore/DOM/Backends/JSON/JsonBackend.h @@ -27,7 +27,7 @@ namespace AZ::Dom return Json::VisitSerializedJson({ buffer, size }, lifetime, visitor); } - Visitor::Result ReadFromBufferInPlace(char* buffer, Visitor& visitor) override + Visitor::Result ReadFromBufferInPlace(char* buffer, [[maybe_unused]] AZStd::optional size, Visitor& visitor) override { return Json::VisitSerializedJsonInPlace(buffer, visitor); } diff --git a/Code/Framework/AzCore/AzCore/DOM/DomBackend.cpp b/Code/Framework/AzCore/AzCore/DOM/DomBackend.cpp index 8ff0e8a0bb..b29c0be231 100644 --- a/Code/Framework/AzCore/AzCore/DOM/DomBackend.cpp +++ b/Code/Framework/AzCore/AzCore/DOM/DomBackend.cpp @@ -10,8 +10,8 @@ namespace AZ::Dom { - Visitor::Result Backend::ReadFromBufferInPlace(char* buffer, Visitor& visitor) + Visitor::Result Backend::ReadFromBufferInPlace(char* buffer, AZStd::optional size, Visitor& visitor) { - return ReadFromBuffer(buffer, strlen(buffer), AZ::Dom::Lifetime::Persistent, visitor); + return ReadFromBuffer(buffer, size.value_or(strlen(buffer)), AZ::Dom::Lifetime::Persistent, visitor); } } // namespace AZ::Dom diff --git a/Code/Framework/AzCore/AzCore/DOM/DomBackend.h b/Code/Framework/AzCore/AzCore/DOM/DomBackend.h index c70af72652..6c9c40ef0e 100644 --- a/Code/Framework/AzCore/AzCore/DOM/DomBackend.h +++ b/Code/Framework/AzCore/AzCore/DOM/DomBackend.h @@ -12,6 +12,7 @@ #include #include #include +#include #include namespace AZ::Dom @@ -32,7 +33,7 @@ namespace AZ::Dom //! - The string won't be deallocated until the visitor no longer needs the values and //! - The string is safe to modify in place. //! The base implementation simply calls ReadFromBuffer. - virtual Visitor::Result ReadFromBufferInPlace(char* buffer, Visitor& visitor); + virtual Visitor::Result ReadFromBufferInPlace(char* buffer, AZStd::optional size, Visitor& visitor); //! A callback that accepts a Visitor, making DOM calls to inform the serializer, and returns an //! aggregate error code to indicate whether or not the operation succeeded. diff --git a/Code/Framework/AzCore/AzCore/DOM/DomUtils.cpp b/Code/Framework/AzCore/AzCore/DOM/DomUtils.cpp index 3c5d4eb668..ca27b177bd 100644 --- a/Code/Framework/AzCore/AzCore/DOM/DomUtils.cpp +++ b/Code/Framework/AzCore/AzCore/DOM/DomUtils.cpp @@ -19,7 +19,7 @@ namespace AZ::Dom::Utils Visitor::Result ReadFromStringInPlace(Backend& backend, AZStd::string& string, Visitor& visitor) { - return backend.ReadFromBufferInPlace(string.data(), visitor); + return backend.ReadFromBufferInPlace(string.data(), string.size(), visitor); } Visitor::Result WriteToString(Backend& backend, AZStd::string& buffer, Backend::WriteCallback writeCallback)