From 63828ea746a2227f793937a242d7fbb9c09ec4da Mon Sep 17 00:00:00 2001 From: "15:07:28 Tim Janik" Date: Fri, 14 Sep 2007 13:28:07 +0000 Subject: [PATCH] applied fix for bug #476840. 2007-09-14 15:07:28 Tim Janik * glib/gutf8.c (g_utf8_strreverse): applied fix for bug #476840. * tests/utf8-pointer.c (test_misc): added test for g_utf8_strreverse(). svn path=/trunk/; revision=5757 --- ChangeLog | 6 ++++++ glib/gutf8.c | 11 +++++------ tests/utf8-pointer.c | 15 ++++++++++++++- 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 56336bc..9c129b6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-09-14 15:07:28 Tim Janik + + * glib/gutf8.c (g_utf8_strreverse): applied fix for bug #476840. + + * tests/utf8-pointer.c (test_misc): added test for g_utf8_strreverse(). + 2007-09-11 Marco Barisione * glib/Makefile.am: diff --git a/glib/gutf8.c b/glib/gutf8.c index 7ff31a1..13a2362 100644 --- a/glib/gutf8.c +++ b/glib/gutf8.c @@ -1782,12 +1782,11 @@ g_unichar_validate (gunichar ch) * Since: 2.2 */ gchar * -g_utf8_strreverse (const gchar *str, - gssize len) +g_utf8_strreverse (const gchar *str, + gssize len) { - gchar *result; + gchar *r, *result; const gchar *p; - gchar *m, *r, skip; if (len < 0) len = strlen (str); @@ -1795,9 +1794,9 @@ g_utf8_strreverse (const gchar *str, result = g_new (gchar, len + 1); r = result + len; p = str; - while (*p) + while (r > result) { - skip = g_utf8_skip[*(guchar*)p]; + gchar *m, skip = g_utf8_skip[*(guchar*) p]; r -= skip; for (m = r; skip; skip--) *m++ = *p++; diff --git a/tests/utf8-pointer.c b/tests/utf8-pointer.c index 6ac2566..91df96e 100644 --- a/tests/utf8-pointer.c +++ b/tests/utf8-pointer.c @@ -90,10 +90,23 @@ test_length (void) g_assert (g_utf8_strlen ("a\340\250\201c", 5) == 3); } +static void +test_misc (void) +{ + char *s; + s = g_utf8_strreverse ("1234", -1); + g_assert (strcmp (s, "4321") == 0); + g_free (s); + s = g_utf8_strreverse ("1234", 3); + g_assert (strcmp (s, "321") == 0); + g_free (s); +} + int main (int argc, char *argv[]) { test_utf8 (longline); test_length (); - + test_misc (); + return 0; } -- 2.7.4