From 547524788fc821eb5dae90cd01cffbb97c2d1c44 Mon Sep 17 00:00:00 2001 From: "Sarnie, Nick" Date: Mon, 23 Sep 2024 07:54:45 -0700 Subject: [PATCH] [SYCL][ClangLinkerWrapper] Fix read of invalid memory Signed-off-by: Sarnie, Nick --- clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp index 9173ff2ac48bd..5446b0583255e 100644 --- a/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp +++ b/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp @@ -1471,8 +1471,12 @@ Error extractBundledObjects(StringRef Filename, const ArgList &Args, llvm::MemoryBuffer::getFileOrSTDIN(*UnbundledFile, /*isText=*/true); if (std::error_code EC = ObjList.getError()) return createFileError(*UnbundledFile, EC); - (*ObjList)->getBuffer().split(ObjectFilePaths, '\n', /*MaxSplit=*/-1, - /*KeepEmpty=*/false); + // Create a copy of the list we can reference even after we close + // the file. + StringRef UnbundledArchiveList = + Args.MakeArgString((*ObjList)->getBuffer()); + UnbundledArchiveList.split(ObjectFilePaths, '\n', /*MaxSplit=*/-1, + /*KeepEmpty=*/false); } else { ObjectFilePaths.push_back(*UnbundledFile); }