From: Joel Rosdahl Date: Wed, 21 Dec 2022 14:15:41 +0000 (+0100) Subject: fix: Don't crash in TextTable for a single heading row X-Git-Tag: v4.8~72 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7cf41457e07ae0c2f8a05f96ed7894c9ac707dde;p=thirdparty%2Fccache.git fix: Don't crash in TextTable for a single heading row --- diff --git a/src/util/TextTable.cpp b/src/util/TextTable.cpp index 618f7b7b5..53014aa4e 100644 --- a/src/util/TextTable.cpp +++ b/src/util/TextTable.cpp @@ -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) { diff --git a/unittest/test_util_TextTable.cpp b/unittest/test_util_TextTable.cpp index 36240731f..1a996c042 100644 --- a/unittest/test_util_TextTable.cpp +++ b/unittest/test_util_TextTable.cpp @@ -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"});