From 9d5e6474281cd4d774ede800eb339e1dc610e471 Mon Sep 17 00:00:00 2001 From: Lang Hames Date: Fri, 12 Nov 2021 08:46:03 -0800 Subject: [PATCH] [JITLink] Fix think-o in handwritten CWrapperFunctionResult -> Error converter. We need to skip the length field when generating error strings. No test case: This hand-hacked deserializer should be removed in the near future once JITLink can use generic ORC APIs (including SPS and WrapperFunction). --- llvm/lib/ExecutionEngine/JITLink/JITLinkMemoryManager.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/llvm/lib/ExecutionEngine/JITLink/JITLinkMemoryManager.cpp b/llvm/lib/ExecutionEngine/JITLink/JITLinkMemoryManager.cpp index 0e5ed8e3d1ce..4fb349255f75 100644 --- a/llvm/lib/ExecutionEngine/JITLink/JITLinkMemoryManager.cpp +++ b/llvm/lib/ExecutionEngine/JITLink/JITLinkMemoryManager.cpp @@ -40,8 +40,9 @@ Error toError(CWrapperFunctionResult R) { char *Content = Large ? R.Data.ValuePtr : R.Data.Value; if (Content[0]) { HasError = true; - ErrMsg.resize(R.Size - 1); - memcpy(&ErrMsg[0], Content + 1, R.Size - 1); + constexpr unsigned StrStart = 1 + sizeof(uint64_t); + ErrMsg.resize(R.Size - StrStart); + memcpy(&ErrMsg[0], Content + StrStart, R.Size - StrStart); } if (Large) free(R.Data.ValuePtr);