diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2016-11-23 09:41:33 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2017-01-10 08:27:33 +0100 |
commit | c757c676428d70d854c3c7c637b8b7e7a8697043 (patch) | |
tree | 47e95747bfba6ad73e240230ea72309a2d85c6df /common/menu.c | |
parent | 9fe05e5ebc13f215d96957ca18e00b71c0d926a4 (diff) | |
download | barebox-c757c676428d70d854c3c7c637b8b7e7a8697043.tar.gz barebox-c757c676428d70d854c3c7c637b8b7e7a8697043.tar.xz |
menu: sanitize menu_add_title
passing a string to menu_add_title() which then gets free by this
function is just plain ugly. Pass it a const char * which gets
duplicated in menu_add_title() when necessary.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'common/menu.c')
-rw-r--r-- | common/menu.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/common/menu.c b/common/menu.c index 64df458e68..e757216c5a 100644 --- a/common/menu.c +++ b/common/menu.c @@ -526,18 +526,17 @@ EXPORT_SYMBOL(menu_add_command_entry); * @display: NULL or pointer to the string which will be freed in this function. * If NULL or zero length string is provided, default title will be added. */ -void menu_add_title(struct menu *m, char *display) +void menu_add_title(struct menu *m, const char *display) { char *tmp, *src, *dst; int lines = 1; int i; - if (!display || !strlen(display)) { - free(display); - display = xasprintf("Menu : %s", m->name ? m->name : ""); - } + if (!display || !strlen(display)) + src = dst = tmp = xasprintf("Menu : %s", m->name ? m->name : ""); + else + src = dst = tmp = xstrdup(display); - src = dst = tmp = xstrdup(display); /* Count lines and separate single string into multiple strings */ while (*src) { if (*src == '\\') { @@ -575,6 +574,5 @@ void menu_add_title(struct menu *m, char *display) } free(tmp); - free(display); } EXPORT_SYMBOL(menu_add_title); |