From aab1d81925f7f25a5e0e099e8a4721cd929df659 Mon Sep 17 00:00:00 2001 From: ouczbs Date: Wed, 20 Nov 2024 21:18:48 +0800 Subject: [PATCH] name add 0x00 --- engine/assets/shader/simple.frag.meta | 4 ++-- engine/assets/shader/simple.vert.meta | 4 ++-- engine/modules/engine/core/include/archive/yaml.h | 5 +++-- engine/modules/engine/core/include/archive/yaml/serde.h | 7 ++----- engine/modules/engine/zlib/include/pmr/name.h | 9 +++++++-- engine/modules/engine/zlib/include/pmr/name.inl | 7 +++---- 6 files changed, 19 insertions(+), 17 deletions(-) diff --git a/engine/assets/shader/simple.frag.meta b/engine/assets/shader/simple.frag.meta index 2ec24c3..226bff8 100644 --- a/engine/assets/shader/simple.frag.meta +++ b/engine/assets/shader/simple.frag.meta @@ -1,6 +1,6 @@ metadatas: - - guid: 7dfa8412-3278-43f6-b332-ac09a132025f + - guid: 2b4239ff-796a-4b55-9d8f-272c80a16b17 name: "" - t_hash: "api::ShaderProgram\x06 mOwner!�/engine/assets/shader/simple.frag" + t_hash: api::ShaderProgram meta: ~ includes: ~ \ No newline at end of file diff --git a/engine/assets/shader/simple.vert.meta b/engine/assets/shader/simple.vert.meta index e9a092f..d4f9f81 100644 --- a/engine/assets/shader/simple.vert.meta +++ b/engine/assets/shader/simple.vert.meta @@ -1,6 +1,6 @@ metadatas: - - guid: 47c28b8c-f2aa-4357-a12d-7212de6e3a9e + - guid: d05a5912-57ef-4447-b9cc-1e117c083ef3 name: "" - t_hash: "api::ShaderProgram\x06 mOwner!�/engine/assets/shader/simple.frag" + t_hash: api::ShaderProgram meta: ~ includes: ~ \ No newline at end of file diff --git a/engine/modules/engine/core/include/archive/yaml.h b/engine/modules/engine/core/include/archive/yaml.h index 623df69..d78d3f5 100644 --- a/engine/modules/engine/core/include/archive/yaml.h +++ b/engine/modules/engine/core/include/archive/yaml.h @@ -13,7 +13,7 @@ namespace gen { } namespace YAML { inline Node APILoad(std::string_view text) { - std::stringstream stream(text.data()); + std::stringstream stream{ std::string(text) }; return Load(stream); } inline std::string_view APIDump(const Node& root) { @@ -22,8 +22,9 @@ namespace YAML { const char* data = emitter.c_str(); size_t size = emitter.size(); // 在 FramePool 上分配内存并拷贝数据 - char* buffer = static_cast(FramePool()->allocate(size, alignof(std::max_align_t))); + char* buffer = static_cast(FramePool()->allocate(size + 1, alignof(std::max_align_t))); std::memcpy(buffer, data, size); + buffer[size] = 0x00; // 返回指向缓冲区的 string_view return std::string_view(buffer, size); } diff --git a/engine/modules/engine/core/include/archive/yaml/serde.h b/engine/modules/engine/core/include/archive/yaml/serde.h index 62c2e1c..71ea28b 100644 --- a/engine/modules/engine/core/include/archive/yaml/serde.h +++ b/engine/modules/engine/core/include/archive/yaml/serde.h @@ -16,11 +16,8 @@ namespace gen { else if constexpr (std::is_enum_v) { *(T*)(ptr) = (T)node.as(); } - else if constexpr (is_string_view_v) { - *(T*)(ptr) = node.as(); - } - else if constexpr (is_string_v) { - *(T*)(ptr) = node.as(); + else if constexpr (is_string_view_v || is_string_v) { + *(T*)(ptr) = node.Scalar(); } else { //static_assert(false, "unknown json read type"); diff --git a/engine/modules/engine/zlib/include/pmr/name.h b/engine/modules/engine/zlib/include/pmr/name.h index c449b75..63419ef 100644 --- a/engine/modules/engine/zlib/include/pmr/name.h +++ b/engine/modules/engine/zlib/include/pmr/name.h @@ -68,6 +68,11 @@ namespace pmr { void SetStringEntryHeader(StringEntryHeader _stringEntryHeader) { stringEntryHeader = _stringEntryHeader; } + void SetStringData(const char* str, uint16_t size) { + memcpy(data, str, size); + data[size] = 0x00; + } + uint16_t GetSize()const { return stringEntryHeader.GetSize(); } const char* GetData() const { return data; }; }; struct HashInfo { @@ -196,14 +201,14 @@ namespace pmr { { if (!flag3_memory29)return ""; const StringEntry* stringEntry = UNIQUER_VAL(stringEntryMemoryManager).GetStringEntry(StringEntryHandle(flag3_memory29)); - return std::string_view(stringEntry->GetData(), stringEntry->GetStringEntryHeader().GetSize()); + return std::string_view(stringEntry->GetData(), stringEntry->GetSize()); } std::string ToString() const { if (!flag3_memory29)return ""; const StringEntry* stringEntry = UNIQUER_VAL(stringEntryMemoryManager).GetStringEntry(StringEntryHandle(flag3_memory29)); - return std::string(stringEntry->GetData(), stringEntry->GetStringEntryHeader().GetSize()); + return std::string(stringEntry->GetData(), stringEntry->GetSize()); } }; } diff --git a/engine/modules/engine/zlib/include/pmr/name.inl b/engine/modules/engine/zlib/include/pmr/name.inl index dc6e6f5..96ed3b7 100644 --- a/engine/modules/engine/zlib/include/pmr/name.inl +++ b/engine/modules/engine/zlib/include/pmr/name.inl @@ -64,7 +64,7 @@ namespace pmr { const Name::Slot& oldSlot = oldSlotArray[slotIndex]; StringEntry* stringEntry = stringEntryMemoryManager.GetStringEntry(oldSlotArray[slotIndex].GetStringEntryHandle()); - const HashInfo hashInfo(std::string_view(stringEntry->GetData(), stringEntry->GetStringEntryHeader().GetSize())); + const HashInfo hashInfo(std::string_view(stringEntry->GetData(), stringEntry->GetSize())); Name::Slot& slot = FindUnusedSlot(hashInfo); @@ -94,7 +94,7 @@ namespace pmr { } inline Name::StringEntryHandle Name::StringEntryMemoryManager::AllocateStringEntry(StringEntryHeader stringEntryHeader, const char* data) { - const uint32_t size = meta_align_size(sizeof(StringEntryHeader) + stringEntryHeader.GetSize(), ALIGN_BYTES); + const uint32_t size = meta_align_size(sizeof(StringEntryHeader) + stringEntryHeader.GetSize() + 1, ALIGN_BYTES); const uint32_t alignedSize = size >> 1; StringEntryHandle stringEntryHandle{}; @@ -112,8 +112,7 @@ namespace pmr { StringEntry* stringEntry = GetStringEntry(stringEntryHandle); stringEntry->SetStringEntryHeader(stringEntryHeader); - memcpy(const_cast(stringEntry->GetData()), data, stringEntryHeader.GetSize()); - + stringEntry->SetStringData(data, stringEntryHeader.GetSize()); return stringEntryHandle; } inline void Name::StringEntryMemoryManager::CreateNewMemoryBlock()