diff options
author | Owen Taylor <otaylor@gtk.org> | 1998-06-11 17:52:12 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 1998-06-11 17:52:12 +0000 |
commit | dbcf64a3f2894fe3bd3be126a4440b7a9104fdf1 (patch) | |
tree | c36d814c53667081245417946e8f25df46afe05d /gtk | |
parent | 0895f5b6697fca5d8e00f60997f38faa6149cdca (diff) | |
download | gtk+-dbcf64a3f2894fe3bd3be126a4440b7a9104fdf1.tar.gz |
Fixed broken list-removal code.
Thu Jun 11 13:09:00 1998 Owen Taylor <otaylor@gtk.org>
* gtk/gtktext.c (remove_cache_line): Fixed broken
list-removal code.
* gtk/gtktext.c: (gtk_text_delete_(forward/backward)_cahr)
Check bounds before deleting.
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/gtktext.c | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/gtk/gtktext.c b/gtk/gtktext.c index 47d63fcc53..13fd9cb43a 100644 --- a/gtk/gtktext.c +++ b/gtk/gtktext.c @@ -1625,7 +1625,11 @@ gtk_text_delete_text (GtkEditable *editable, gint start_pos, gint end_pos) { - GtkText *text = GTK_TEXT (editable); + GtkText *text; + + g_return_if_fail (start_pos >= 0); + + text = GTK_TEXT (editable); gtk_text_set_point (text, start_pos); if (end_pos < 0) @@ -3262,20 +3266,17 @@ remove_cache_line (GtkText* text, GList* member) { GList *list; + if (member == NULL) + return NULL; + if (member == text->line_start_cache) - { - if (text->line_start_cache) - text->line_start_cache = text->line_start_cache->next; - } + text->line_start_cache = text->line_start_cache->next; if (member->prev) - { - list = member->prev; - - list->next = member->next; - if (list->next) - list->next->prev = list; - } + member->prev->next = member->next; + + if (member->next) + member->next->prev = member->prev; list = member->next; @@ -3497,7 +3498,8 @@ gtk_text_delete_forward_character (GtkText *text) gtk_editable_delete_selection (editable); else { - gtk_editable_delete_text (editable, text->point.index, text->point.index + 1); + if (text->point.index + 1 <= TEXT_LENGTH (text)) + gtk_editable_delete_text (editable, text->point.index, text->point.index + 1); } } @@ -3511,7 +3513,8 @@ gtk_text_delete_backward_character (GtkText *text) gtk_editable_delete_selection (editable); else { - gtk_editable_delete_text (editable, text->point.index - 1, text->point.index); + if (text->point.index > 0) + gtk_editable_delete_text (editable, text->point.index - 1, text->point.index); } } |