[clang] [libclang][test] Avoid narrowing when initializing CXUnsavedFile::Length (PR #228405)
via cfe-commits
cfe-commits at lists.llvm.org
Fri Oct 2 05:11:04 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: UebelAndre
<details>
<summary>Changes</summary>
`CXUnsavedFile::Length` is `unsigned long`, which is 32 bits on 64-bit Windows. Initializing it from `std::string::size()` inside the braced initializer is a narrowing conversion there: MSVC reports `C4838` and clang-cl `-Wc++11-narrowing`, both fatal under `/WX`. Cast explicitly.
---
Full diff: https://github.com/llvm/llvm-project/pull/228405.diff
1 Files Affected:
- (modified) clang/unittests/libclang/TestUtils.h (+5-3)
``````````diff
diff --git a/clang/unittests/libclang/TestUtils.h b/clang/unittests/libclang/TestUtils.h
index 013aad17358211..27543d0a63d28b 100644
--- a/clang/unittests/libclang/TestUtils.h
+++ b/clang/unittests/libclang/TestUtils.h
@@ -82,9 +82,11 @@ class LibclangParseTest : public ::testing::Test {
fixed_addr_string(new std::string(Filename)),
fixed_addr_string(new std::string(Contents))));
UnsavedFiles.push_back({
- it.first->first->c_str(), // filename
- it.first->second->c_str(), // contents
- it.first->second->size() // length
+ it.first->first->c_str(), // filename
+ it.first->second->c_str(), // contents
+ // CXUnsavedFile::Length is `unsigned long`, which is 32 bits on
+ // 64-bit Windows, so converting from size_t here narrows.
+ static_cast<unsigned long>(it.first->second->size()) // length
});
}
template <typename F>
``````````
</details>
https://github.com/llvm/llvm-project/pull/228405
More information about the cfe-commits
mailing list