diff --git a/lib/mu-str.c b/lib/mu-str.c index 11801be9..5c09a7b3 100644 --- a/lib/mu-str.c +++ b/lib/mu-str.c @@ -1056,15 +1056,19 @@ mu_str_remove_ctrl_in_place (char *str) if (!iscntrl(*cur)) continue; - /* control char detected... */ - gstr = g_string_sized_new (strlen (str)); - for (cur = str; *cur; ++cur) - if (!iscntrl (*cur)) - g_string_append_c (gstr, *cur); - memcpy (str, gstr->str, gstr->len); /* fits */ - g_string_free (gstr, TRUE); - - break; + if (isspace(*cur)) { + /* squash special white space into a simple space */ + *cur = ' '; + } else { + /* remove other control characters */ + gstr = g_string_sized_new (strlen (str)); + for (cur = str; *cur; ++cur) + if (!iscntrl (*cur)) + g_string_append_c (gstr, *cur); + memcpy (str, gstr->str, gstr->len); /* fits */ + g_string_free (gstr, TRUE); + break; + } } return str;