From 4736dd85190bd007365dcbde18aee027c1711bf9 Mon Sep 17 00:00:00 2001 From: Andrzej Rybczak Date: Wed, 9 Sep 2009 19:02:22 +0200 Subject: [PATCH] if tag type for column is invalid, display empty column instead of crashing --- src/display.cpp | 3 ++- src/settings.cpp | 10 ++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/display.cpp b/src/display.cpp index 612313c7..a913ea99 100644 --- a/src/display.cpp +++ b/src/display.cpp @@ -84,6 +84,7 @@ std::string Display::Columns() tag = "Comment"; break; default: + tag.clear(); break; } if (it->right_alignment) @@ -182,7 +183,7 @@ void Display::SongsInColumns(const MPD::Song &s, void *, Menu *menu) if (it->color != clDefault) *menu << it->color; whline(menu->Raw(), 32, menu->GetWidth()-where); - std::string tag = (s.*get)(); + std::string tag = get ? (s.*get)() : ""; if (it->right_alignment) { if (!tag.empty() || it->display_empty_tag) diff --git a/src/settings.cpp b/src/settings.cpp index 355b46d1..6b019f2b 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -919,9 +919,15 @@ void ReadConfiguration(ncmpcpp_config &conf) Column col; col.color = IntoColor(GetLineValue(conf.song_list_columns_format, '[', ']', 1)); std::string tag_type = GetLineValue(conf.song_list_columns_format, '{', '}', 1); - col.type = tag_type.at(0); + if (tag_type.length() > 0) // at least tag type was specified + col.type = tag_type[0]; + else + { + col.type = 0; + col.display_empty_tag = 0; + } col.fixed = *width.rbegin() == 'f'; - for (std::string::const_iterator it = ++tag_type.begin(); it != tag_type.end(); ++it) + for (std::string::const_iterator it = tag_type.begin()+(tag_type.length() > 0); it != tag_type.end(); ++it) { switch (*it) {