[PATCH 1/2] ui/ncurses: Check wcstombs() for error in nc-lang
Sam Mendoza-Jonas
sam at mendozajonas.com
Thu Mar 3 14:43:10 AEDT 2016
If we are unable to correctly parse wide-character strings for display
in the Language screen (eg. due to an incorrect locale) display an
error string instead of continuing to try to display the string.
Signed-off-by: Sam Mendoza-Jonas <sam at mendozajonas.com>
---
ui/ncurses/nc-lang.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/ui/ncurses/nc-lang.c b/ui/ncurses/nc-lang.c
index 3d86659..e9d560d 100644
--- a/ui/ncurses/nc-lang.c
+++ b/ui/ncurses/nc-lang.c
@@ -21,6 +21,7 @@
#include <stdlib.h>
#include <string.h>
+#include <locale.h>
#include <talloc/talloc.h>
#include <types/types.h>
@@ -265,8 +266,14 @@ static void lang_screen_setup_widgets(struct lang_screen *screen,
len = wcstombs(NULL, lang->label, 0);
assert(len >= 0);
- label = talloc_array(screen, char, len + 1);
- wcstombs(label, lang->label, len + 1);
+ if (len < 0) {
+ label = talloc_asprintf(screen,
+ "Unable to display text in this locale (%s)\n",
+ setlocale(LC_ALL, NULL));
+ } else {
+ label = talloc_array(screen, char, len + 1);
+ wcstombs(label, lang->label, len + 1);
+ }
selected = config->lang && !strcmp(lang->name, config->lang);
found |= selected;
--
2.7.2
More information about the Petitboot
mailing list