1
0
Эх сурвалжийг харах

cmRST: Fix crash on empty markup block

Brad King 6 жил өмнө
parent
commit
a9b38a1757

+ 6 - 0
Source/cmRST.cxx

@@ -457,6 +457,12 @@ void cmRST::UnindentLines(std::vector<std::string>& lines)
   size_t trailingEmpty =
     std::distance(rit, cmFindNot(cmReverseRange(lines), std::string()));
 
+  if ((leadingEmpty + trailingEmpty) >= lines.size()) {
+    // All lines are empty.  The markup block is empty.  Leave only one.
+    lines.resize(1);
+    return;
+  }
+
   std::vector<std::string>::iterator contentEnd = cmRotate(
     lines.begin(), lines.begin() + leadingEmpty, lines.end() - trailingEmpty);
   lines.erase(contentEnd, lines.end());

+ 4 - 0
Tests/CMakeLib/testRST.expect

@@ -83,6 +83,10 @@ or after a paragraph ending in two colons::
 but not after a line ending in two colons::
 in the middle of a paragraph.
 
+A literal block can be empty::
+
+
+
 .. productionlist::
  grammar: `production`
  production: "content rendered"

+ 4 - 0
Tests/CMakeLib/testRST.rst

@@ -90,6 +90,10 @@ or after a paragraph ending in two colons::
 but not after a line ending in two colons::
 in the middle of a paragraph.
 
+A literal block can be empty::
+
+
+
 .. productionlist::
  grammar: `production`
  production: "content rendered"