aboutsummaryrefslogtreecommitdiff
path: root/src/zenhttp/packageformat.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/zenhttp/packageformat.cpp')
-rw-r--r--src/zenhttp/packageformat.cpp34
1 files changed, 17 insertions, 17 deletions
diff --git a/src/zenhttp/packageformat.cpp b/src/zenhttp/packageformat.cpp
index 267ce386c..4f001a14f 100644
--- a/src/zenhttp/packageformat.cpp
+++ b/src/zenhttp/packageformat.cpp
@@ -130,7 +130,7 @@ FormatPackageMessageBuffer(const CbPackage& Data, FormatFlags Flags, void* Targe
static void
MarshalLocal(CbAttachmentEntry*& AttachmentInfo,
- const std::string& Path8,
+ std::string_view Path8,
CbAttachmentReferenceHeader& LocalRef,
const IoHash& AttachmentHash,
bool IsCompressed,
@@ -156,7 +156,7 @@ IsLocalRef(tsl::robin_map<void*, std::string>& FileNameMap,
bool DenyPartialLocalReferences,
void* TargetProcessHandle,
CbAttachmentReferenceHeader& LocalRef,
- std::string& Path8)
+ StringBuilderBase& Path8)
{
const SharedBuffer& Segment = AttachmentBinary.GetSegments().front();
IoBufferFileReference Ref;
@@ -172,9 +172,11 @@ IsLocalRef(tsl::robin_map<void*, std::string>& FileNameMap,
return false;
}
+ Path8.Reset();
+
if (auto It = FileNameMap.find(Ref.FileHandle); It != FileNameMap.end())
{
- Path8 = It->second;
+ Path8.Append(It->second);
}
else
{
@@ -193,7 +195,7 @@ IsLocalRef(tsl::robin_map<void*, std::string>& FileNameMap,
if (OK)
{
DuplicatedHandles.push_back((void*)TargetHandle);
- Path8 = fmt::format("{}{}", HandlePrefix, reinterpret_cast<uint64_t>(TargetHandle));
+ fmt::format_to(StringBuilderAppender(Path8), "{}{}", HandlePrefix, reinterpret_cast<uint64_t>(TargetHandle));
UseFilePath = false;
}
}
@@ -205,21 +207,19 @@ IsLocalRef(tsl::robin_map<void*, std::string>& FileNameMap,
#endif // ZEN_PLATFORM_WINDOWS
if (UseFilePath)
{
- ExtendablePathBuilder<256> LocalRefFile;
- std::error_code Ec;
- std::filesystem::path FilePath = PathFromHandle(Ref.FileHandle, Ec);
+ std::error_code Ec;
+ std::filesystem::path FilePath = PathFromHandle(Ref.FileHandle, Ec);
if (Ec)
{
ZEN_WARN("Failed to get path for file handle {} in IsLocalRef check, reason '{}'", Ref.FileHandle, Ec.message());
return false;
}
- LocalRefFile.Append(std::filesystem::absolute(FilePath));
- Path8 = LocalRefFile.ToUtf8();
+ PathToUtf8(std::filesystem::absolute(FilePath), Path8);
}
- FileNameMap.insert_or_assign(Ref.FileHandle, Path8);
+ FileNameMap.insert_or_assign(Ref.FileHandle, Path8.ToString());
}
- LocalRef.AbsolutePathLength = gsl::narrow<uint16_t>(Path8.size());
+ LocalRef.AbsolutePathLength = gsl::narrow<uint16_t>(Path8.Size());
LocalRef.PayloadByteOffset = Ref.FileChunkOffset;
LocalRef.PayloadByteSize = Ref.FileChunkSize;
@@ -302,8 +302,8 @@ FormatPackageMessageInternal(const CbPackage& Data, FormatFlags Flags, void* Tar
bool MarshalByLocalRef = EnumHasAllFlags(Flags, FormatFlags::kAllowLocalReferences) && (Compressed.GetSegments().size() == 1);
bool DenyPartialLocalReferences = EnumHasAllFlags(Flags, FormatFlags::kDenyPartialLocalReferences);
- CbAttachmentReferenceHeader LocalRef;
- std::string Path8;
+ CbAttachmentReferenceHeader LocalRef;
+ ExtendableStringBuilder<128> Path8;
if (MarshalByLocalRef)
{
@@ -321,7 +321,7 @@ FormatPackageMessageInternal(const CbPackage& Data, FormatFlags Flags, void* Tar
const bool IsCompressed = true;
bool IsHandle = false;
#if ZEN_PLATFORM_WINDOWS
- IsHandle = Path8.starts_with(HandlePrefix);
+ IsHandle = Path8.ToView().starts_with(HandlePrefix);
#endif
MarshalLocal(AttachmentInfo, Path8, LocalRef, AttachmentHash, IsCompressed, ResponseBuffers);
ZEN_DEBUG("Marshalled '{}' as file {} of {} bytes", Path8, IsHandle ? "handle" : "path", Compressed.GetSize());
@@ -357,8 +357,8 @@ FormatPackageMessageInternal(const CbPackage& Data, FormatFlags Flags, void* Tar
EnumHasAllFlags(Flags, FormatFlags::kAllowLocalReferences) && (AttachmentBinary.GetSegments().size() == 1);
bool DenyPartialLocalReferences = EnumHasAllFlags(Flags, FormatFlags::kDenyPartialLocalReferences);
- CbAttachmentReferenceHeader LocalRef;
- std::string Path8;
+ CbAttachmentReferenceHeader LocalRef;
+ ExtendableStringBuilder<128> Path8;
if (MarshalByLocalRef)
{
@@ -376,7 +376,7 @@ FormatPackageMessageInternal(const CbPackage& Data, FormatFlags Flags, void* Tar
const bool IsCompressed = false;
bool IsHandle = false;
#if ZEN_PLATFORM_WINDOWS
- IsHandle = Path8.starts_with(HandlePrefix);
+ IsHandle = Path8.ToView().starts_with(HandlePrefix);
#endif
MarshalLocal(AttachmentInfo, Path8, LocalRef, AttachmentHash, IsCompressed, ResponseBuffers);
ZEN_DEBUG("Marshalled '{}' as file {} of {} bytes", Path8, IsHandle ? "handle" : "path", AttachmentBinary.GetSize());