]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libsmartcols: set everything once in scols_table_set_title()
authorIgor Gnatenko <i.gnatenko.brain@gmail.com>
Fri, 22 Jan 2016 11:54:02 +0000 (12:54 +0100)
committerIgor Gnatenko <i.gnatenko.brain@gmail.com>
Fri, 22 Jan 2016 11:54:02 +0000 (12:54 +0100)
Reported-by: Karel Zak <kzak@redhat.com>
Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
libsmartcols/src/table.c

index 57f6ed5153097e6bdff9661fa24dd5e7a0265684..a3f4809157e519c76960ce82eaff3539dd328a0f 100644 (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;
 }