summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/common/cfgfiles.c4
-rw-r--r--src/common/server.c11
-rw-r--r--src/common/text.c11
-rw-r--r--src/common/xchat.h1
-rw-r--r--src/fe-gtk/setup.c4
5 files changed, 23 insertions, 8 deletions
diff --git a/src/common/cfgfiles.c b/src/common/cfgfiles.c
index 130ad9d9..47d615e0 100644
--- a/src/common/cfgfiles.c
+++ b/src/common/cfgfiles.c
@@ -581,6 +581,9 @@ const struct prefs vars[] = {
 	{"text_indent", P_OFFINT (indent_nicks), TYPE_BOOL},
 	{"text_max_indent", P_OFFINT (max_auto_indent), TYPE_INT},
 	{"text_max_lines", P_OFFINT (max_lines), TYPE_INT},
+#ifdef WIN32
+	{"text_nonbmp", P_OFFINT (text_nonbmp), TYPE_BOOL},
+#endif
 	{"text_replay", P_OFFINT (text_replay), TYPE_BOOL},
 	{"text_show_marker", P_OFFINT (show_marker), TYPE_BOOL},
 	{"text_show_sep", P_OFFINT (show_separator), TYPE_BOOL},
@@ -714,6 +717,7 @@ load_config (void)
 	prefs.autodccsend = 2;	/* browse mode */
 #ifdef WIN32
 	prefs.identd = 1;
+	prefs.text_nonbmp = 1;
 #endif
 	strcpy (prefs.gui_license, "");
 	strcpy (prefs.spell_langs, g_getenv ("LC_ALL") ? g_getenv ("LC_ALL") : "en_US");
diff --git a/src/common/server.c b/src/common/server.c
index 53e877e3..fb50cc8a 100644
--- a/src/common/server.c
+++ b/src/common/server.c
@@ -402,10 +402,13 @@ server_inline (server *serv, char *line, int len)
 	}
 
 #ifdef WIN32
-	cleaned_line = text_replace_non_bmp (line, len, &cleaned_len);
-	if (cleaned_line != NULL ) {
-		line = cleaned_line;
-		len = cleaned_len;
+	if (prefs.text_nonbmp)
+	{
+		cleaned_line = text_replace_non_bmp (line, len, &cleaned_len);
+		if (cleaned_line != NULL ) {
+			line = cleaned_line;
+			len = cleaned_len;
+		}
 	}
 #endif
 
diff --git a/src/common/text.c b/src/common/text.c
index 93392d1a..64102908 100644
--- a/src/common/text.c
+++ b/src/common/text.c
@@ -374,11 +374,14 @@ scrollback_load (session *sess)
 			if (text)
 			{
 				text = strip_color (text + 1, -1, STRIP_COLOR);
-				cleaned_text = text_replace_non_bmp (text, -1, &cleaned_len);
-				if (cleaned_text != NULL)
+				if (prefs.text_nonbmp)
 				{
-					g_free (text);
-					text = cleaned_text;
+					cleaned_text = text_replace_non_bmp (text, -1, &cleaned_len);
+					if (cleaned_text != NULL)
+					{
+						g_free (text);
+						text = cleaned_text;
+					}
 				}
 				fe_print_text (sess, text, stamp);
 				g_free (text);
diff --git a/src/common/xchat.h b/src/common/xchat.h
index 6815cc39..ba9040ca 100644
--- a/src/common/xchat.h
+++ b/src/common/xchat.h
@@ -307,6 +307,7 @@ struct xchatprefs
 	unsigned int emoticons;
 	unsigned int tab_icons;
 	unsigned int tab_xp;
+	unsigned int text_nonbmp;
 #endif
 
 	unsigned int ctcp_number_limit;	/*flood */
diff --git a/src/fe-gtk/setup.c b/src/fe-gtk/setup.c
index cce85d30..bf100570 100644
--- a/src/fe-gtk/setup.c
+++ b/src/fe-gtk/setup.c
@@ -407,6 +407,9 @@ static const setting advanced_settings[] =
 	{ST_TOGGLE,	N_("Display MODEs in raw form"), P_OFFINTNL(raw_modes), 0, 0, 0},
 	{ST_TOGGLE,	N_("Whois on notify"), P_OFFINTNL(whois_on_notifyonline), N_("Sends a /WHOIS when a user comes online in your notify list"), 0, 0},
 	{ST_TOGGLE,	N_("Hide join and part messages"), P_OFFINTNL(confmode), N_("Hide channel join/part messages by default"), 0, 0},
+#ifdef WIN32
+	{ST_TOGGLE,	N_("Sanitize exotic characters causing crashes"), P_OFFINTNL(text_nonbmp), 0, 0, 0},
+#endif
 	{ST_ENTRY,	N_("License Text:"), P_OFFSETNL(gui_license), 0, 0, sizeof prefs.gui_license},
 	{ST_HEADER,	N_("Auto Open DCC Windows"),0,0,0},
 	{ST_TOGGLE, N_("Send window"), P_OFFINTNL(autoopendccsendwindow), 0, 0, 0},
@@ -425,6 +428,7 @@ static const setting advanced_settings_oneinstance[] =
 	{ST_TOGGLE,	N_("Whois on notify"), P_OFFINTNL(whois_on_notifyonline), N_("Sends a /WHOIS when a user comes online in your notify list"), 0, 0},
 	{ST_TOGGLE,	N_("Hide join and part messages"), P_OFFINTNL(confmode), N_("Hide channel join/part messages by default"), 0, 0},
 	{ST_TOGGLE,	N_("Allow only one instance of XChat to run"), P_OFFINTNL(gui_one_instance), 0, 0, 0},
+	{ST_TOGGLE,	N_("Sanitize exotic characters causing crashes"), P_OFFINTNL(text_nonbmp), 0, 0, 0},
 	{ST_ENTRY,	N_("License Text:"), P_OFFSETNL(gui_license), 0, 0, sizeof prefs.gui_license},
 	{ST_HEADER,	N_("Auto Open DCC Windows"),0,0,0},
 	{ST_TOGGLE, N_("Send window"), P_OFFINTNL(autoopendccsendwindow), 0, 0, 0},