Initialize locale charset earlier
This patch fixes a segfault when scr_LogPrint() is called before
scr_InitCurses().
--- a/mcabber/src/main.c Sun Mar 26 23:41:25 2006 +0200
+++ b/mcabber/src/main.c Mon Mar 27 22:09:30 2006 +0200
@@ -229,6 +229,8 @@
/* Initialize commands system */
cmd_init();
+ /* Initialize charset */
+ scr_InitLocaleCharSet();
/* Parsing config file... */
ret = cfg_read_file(configFile);
--- a/mcabber/src/screen.c Sun Mar 26 23:41:25 2006 +0200
+++ b/mcabber/src/screen.c Mon Mar 27 22:09:30 2006 +0200
@@ -270,6 +270,13 @@
add_keyseq("[6$", MKEY_SHIFT_PGDOWN, 0); // Shift-PageDown
}
+void scr_InitLocaleCharSet(void)
+{
+ setlocale(LC_CTYPE, "");
+ LocaleCharSet = nl_langinfo(CODESET);
+ utf8_mode = (strcmp(LocaleCharSet, "UTF-8") == 0);
+}
+
void scr_InitCurses(void)
{
/* Key sequences initialization */
@@ -294,10 +301,6 @@
inputLine[0] = 0;
ptr_inputline = inputLine;
- setlocale(LC_CTYPE, "");
- LocaleCharSet = nl_langinfo(CODESET);
- utf8_mode = (strcmp(LocaleCharSet, "UTF-8") == 0);
-
return;
}
--- a/mcabber/src/screen.h Sun Mar 26 23:41:25 2006 +0200
+++ b/mcabber/src/screen.h Mon Mar 27 22:09:30 2006 +0200
@@ -48,6 +48,7 @@
void scr_Getch(keycode *kcode);
int process_key(keycode kcode);
+void scr_InitLocaleCharSet(void);
void scr_InitCurses(void);
void scr_TerminateCurses(void);
void scr_DrawMainWindow(unsigned int fullinit);