Index: gtk/gtktextiter.c =================================================================== RCS file: /cvs/gnome/gtk+/gtk/gtktextiter.c,v retrieving revision 1.85 diff -u -p -r1.85 gtktextiter.c --- gtk/gtktextiter.c 13 Jun 2005 05:15:10 -0000 1.85 +++ gtk/gtktextiter.c 31 Oct 2005 23:32:18 -0000 @@ -2394,19 +2394,15 @@ gtk_text_iter_backward_chars (GtkTextIte if (real->line_byte_offset >= 0) { + const char *p; gint new_byte_offset; gint i; - new_byte_offset = 0; - i = 0; - while (i < real->segment_char_offset) - { - const char * start = real->segment->body.chars + new_byte_offset; - new_byte_offset += g_utf8_next_char (start) - start; - - ++i; - } + /* byte offset is always >= char offset */ + p = g_utf8_offset_to_pointer (real->segment->body.chars, + real->segment_char_offset); + new_byte_offset = p - real->segment->body.chars; real->line_byte_offset -= (real->segment_byte_offset - new_byte_offset); real->segment_byte_offset = new_byte_offset; }