Răsfoiți Sursa

Merge topic 'rst-bad-markup-block'

a9b38a1757 cmRST: Fix crash on empty markup block
2024327746 Help: Remove empty literal block markup in RESOURCE target property

Acked-by: Kitware Robot <[email protected]>
Merge-request: !3197
Brad King 6 ani în urmă
părinte
comite
ffcb4f7ec5

+ 1 - 1
Help/prop_tgt/RESOURCE.rst

@@ -11,7 +11,7 @@ directory (eg. ``Resources`` directory for macOS) inside the bundle.
 On non-Apple platforms these files may be installed using the ``RESOURCE``
 option to the :command:`install(TARGETS)` command.
 
-Following example of Application Bundle::
+Following example of Application Bundle:
 
 .. code-block:: cmake
 

+ 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"