]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
fix: Don't crash in TextTable for a single heading row
authorJoel Rosdahl <joel.rosdahl@maxar.com>
Wed, 21 Dec 2022 14:15:41 +0000 (15:15 +0100)
committerJoel Rosdahl <joel@rosdahl.net>
Fri, 23 Dec 2022 09:56:43 +0000 (10:56 +0100)
src/util/TextTable.cpp
unittest/test_util_TextTable.cpp

index 618f7b7b57537c1eeb2fbf669ffb4e509ef4dc4d..53014aa4efbeb053f5c7c6e51a87dd150a6e490c 100644 (file)
@@ -32,6 +32,7 @@ TextTable::add_heading(const std::string& text)
   Cell cell(text);
   cell.m_heading = true;
   m_rows.push_back({cell});
+  m_columns = std::max(m_columns, size_t(1));
 }
 
 void
@@ -86,6 +87,8 @@ TextTable::render() const
 
   std::string result;
   for (const auto& row : m_rows) {
+    ASSERT(column_widths.size() >= row.size());
+
     std::string r;
     bool first = true;
     for (size_t i = 0; i < row.size(); ++i) {
index 36240731f1e2dff033d15067a53a09e25a79716c..1a996c0428f3bcf44819d3f8c0f794b5abbb8c52 100644 (file)
@@ -33,6 +33,12 @@ TEST_CASE("TextTable")
     CHECK(table.render() == "");
   }
 
+  SUBCASE("only a heading")
+  {
+    table.add_heading("heading");
+    CHECK(table.render() == "heading\n");
+  }
+
   SUBCASE("1x1")
   {
     table.add_row({"a"});