[clang] [libclang] Always Dup in createRef (PR #125020)
via cfe-commits
cfe-commits at lists.llvm.org
Wed Jan 29 20:00:14 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: Vitaly Buka (vitalybuka)
<details>
<summary>Changes</summary>
We can't guaranty that underlying string is
0-terminated and [String.size()] is even in the
same allocation.
---
Full diff: https://github.com/llvm/llvm-project/pull/125020.diff
1 Files Affected:
- (modified) clang/tools/libclang/CXString.cpp (+1-13)
``````````diff
diff --git a/clang/tools/libclang/CXString.cpp b/clang/tools/libclang/CXString.cpp
index 5e427957a1092b..aaa8f8eeb67a12 100644
--- a/clang/tools/libclang/CXString.cpp
+++ b/clang/tools/libclang/CXString.cpp
@@ -87,19 +87,7 @@ CXString createRef(StringRef String) {
if (String.empty())
return createEmpty();
- // If the string is not nul-terminated, we have to make a copy.
-
- // FIXME: This is doing a one past end read, and should be removed! For memory
- // we don't manage, the API string can become unterminated at any time outside
- // our control.
-
- if (String.data()[String.size()] != 0)
- return createDup(String);
-
- CXString Result;
- Result.data = String.data();
- Result.private_flags = (unsigned) CXS_Unmanaged;
- return Result;
+ return createDup(String);
}
CXString createDup(StringRef String) {
``````````
</details>
https://github.com/llvm/llvm-project/pull/125020
More information about the cfe-commits
mailing list