If a character can't be converted, don't replace it with a NUL byte, but

2006-08-05  Matthias Clasen  <mclasen@redhat.com>

	* glib/guniprop.c (g_unichar_toupper, g_unichar_tolower)
	(real_toupper, real_tolower): If a character can't be converted,
	don't replace it with a NUL byte, but leave it unchanged.
	(#348491, Nikolai Weibull)

	* tests/unicode-caseconv.c: Adapt to this change.

	* tests/unicode-caseconv.c (main): Add a comment to point out
	a quirk in the test data that we are working around here.
This commit is contained in:
Matthias Clasen
2006-08-05 21:53:49 +00:00
committed by Matthias Clasen
parent ce2d5c4b0c
commit 994d642cde
4 changed files with 57 additions and 8 deletions

View File

@@ -509,7 +509,12 @@ g_unichar_toupper (gunichar c)
return g_utf8_get_char (p);
}
else
return val ? val : c;
{
/* Some lowercase letters, e.g., U+000AA, FEMININE ORDINAL INDICATOR,
* do not have an uppercase equivalent, in which case val will be
* zero. */
return val ? val : c;
}
}
else if (t == G_UNICODE_TITLECASE_LETTER)
{
@@ -546,7 +551,11 @@ g_unichar_tolower (gunichar c)
return g_utf8_get_char (p);
}
else
return val ? val : c;
{
/* Not all uppercase letters are guaranteed to have a lowercase
* equivalent. If this is the case, val will be zero. */
return val ? val : c;
}
}
else if (t == G_UNICODE_TITLECASE_LETTER)
{
@@ -825,7 +834,10 @@ real_toupper (const gchar *str,
}
}
len += g_unichar_to_utf8 (val, out_buffer ? out_buffer + len : NULL);
/* Some lowercase letters, e.g., U+000AA, FEMININE ORDINAL INDICATOR,
* do not have an uppercase equivalent, in which case val will be
* zero. */
len += g_unichar_to_utf8 (val ? val : c, out_buffer ? out_buffer + len : NULL);
}
}
else
@@ -1012,7 +1024,9 @@ real_tolower (const gchar *str,
}
}
len += g_unichar_to_utf8 (val, out_buffer ? out_buffer + len : NULL);
/* Not all uppercase letters are guaranteed to have a lowercase
* equivalent. If this is the case, val will be zero. */
len += g_unichar_to_utf8 (val ? val : c, out_buffer ? out_buffer + len : NULL);
}
}
else