diff options
-rw-r--r-- | shell/report.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/shell/report.c b/shell/report.c index fb18c346..20974de1 100644 --- a/shell/report.c +++ b/shell/report.c @@ -111,8 +111,18 @@ void report_context_configure(ReportContext * ctx, GKeyFile * keyfile) if (g_str_equal(key, "ShowColumnHeaders")) { ctx->show_column_headers = g_key_file_get_boolean(keyfile, group, key, NULL); } else if (g_str_has_prefix(key, "ColumnTitle")) { - gchar *value, *title = strchr(key, '$') + 1; + gchar *value, *title = strchr(key, '$'); + if (!title) { + DEBUG("couldn't find column title"); + break; + } + title++; + if (!*title) { + DEBUG("title is empty"); + break; + } + value = g_key_file_get_value(keyfile, group, key, NULL); if (g_str_equal(title, "Extra1")) { ctx->columns |= REPORT_COL_EXTRA1; @@ -126,9 +136,7 @@ void report_context_configure(ReportContext * ctx, GKeyFile * keyfile) ctx->columns |= REPORT_COL_PROGRESS; } - g_hash_table_replace(ctx->column_titles, title, g_strdup(value)); - - g_free(value); + g_hash_table_replace(ctx->column_titles, title, value); } else if (g_str_equal(key, "ViewType")) { if (g_key_file_get_integer(keyfile, group, "ViewType", NULL) == SHELL_VIEW_PROGRESS) { ctx->columns &= ~REPORT_COL_VALUE; |