libsmartcols: set everything once in scols_table_set_title()

Reported-by: Karel Zak <kzak@redhat.com>
Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
This commit is contained in:
Igor Gnatenko 2016-01-22 12:54:02 +01:00
parent 2f62d9fe3e
commit 0a69e647fc
1 changed files with 8 additions and 9 deletions

View File

@ -136,6 +136,7 @@ int scols_table_set_name(struct libscols_table *tb, const char *name)
int scols_table_set_title(struct libscols_table *tb, const char *title, int position, const char *color)
{
char *p = NULL;
char *q = NULL;
if (!tb)
return -EINVAL;
@ -145,12 +146,7 @@ int scols_table_set_title(struct libscols_table *tb, const char *title, int posi
if (!p)
return -ENOMEM;
}
free(tb->title);
tb->title = p;
tb->title_pos = position;
p = NULL;
if (color) {
if (isalpha(*color)) {
color = color_sequence_from_colorname(color);
@ -158,13 +154,16 @@ int scols_table_set_title(struct libscols_table *tb, const char *title, int posi
if (!color)
return -EINVAL;
}
p = strdup(color);
if (!p)
q = strdup(color);
if (!q)
return -ENOMEM;
}
free(tb->title_color);
tb->title_color = p;
free(tb->title);
free(tb->title_color);
tb->title = p;
tb->title_color = q;
tb->title_pos = position;
return 0;
}