[PATCH] D158363: [clang-format] Fix segmentation fault when formatting nested namespaces
Arkadiy Yudintsev via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Aug 22 02:59:33 PDT 2023
d0nc1h0t updated this revision to Diff 552281.
d0nc1h0t added a comment.
Added unittest.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D158363/new/
https://reviews.llvm.org/D158363
Files:
clang/lib/Format/UnwrappedLineFormatter.cpp
clang/unittests/Format/FormatTest.cpp
Index: clang/unittests/Format/FormatTest.cpp
===================================================================
--- clang/unittests/Format/FormatTest.cpp
+++ clang/unittests/Format/FormatTest.cpp
@@ -4223,6 +4223,19 @@
"void foo() {}\n"
"} // namespace ns\n",
Style);
+
+ FormatStyle LLVMWithCompactInnerNamespace = getLLVMStyle();
+ LLVMWithCompactInnerNamespace.CompactNamespaces = true;
+ LLVMWithCompactInnerNamespace.NamespaceIndentation = FormatStyle::NI_Inner;
+ verifyNoCrash("namespace ns1 { namespace ns2 { namespace ns3 {\n"
+ "void func_in_ns() {\n"
+ " int res{0};\n"
+ "// block for debug mode\n"
+ "#ifndef NDEBUG\n"
+ "#endif\n"
+ "}\n"
+ "}}}\n",
+ LLVMWithCompactInnerNamespace);
}
TEST_F(FormatTest, NamespaceMacros) {
Index: clang/lib/Format/UnwrappedLineFormatter.cpp
===================================================================
--- clang/lib/Format/UnwrappedLineFormatter.cpp
+++ clang/lib/Format/UnwrappedLineFormatter.cpp
@@ -390,7 +390,7 @@
for (auto *CompactedLine = I + J; CompactedLine <= ClosingLine;
++CompactedLine) {
if (!(*CompactedLine)->InPPDirective)
- (*CompactedLine)->Level -= OutdentBy;
+ (*CompactedLine)->Level -= std::min(OutdentBy, (*CompactedLine)->Level);
}
}
return J - 1;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D158363.552281.patch
Type: text/x-patch
Size: 1500 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20230822/3f7ffad5/attachment-0001.bin>
More information about the cfe-commits
mailing list