From dbcf64a3f2894fe3bd3be126a4440b7a9104fdf1 Mon Sep 17 00:00:00 2001 From: Owen Taylor Date: Thu, 11 Jun 1998 17:52:12 +0000 Subject: [PATCH] Fixed broken list-removal code. Thu Jun 11 13:09:00 1998 Owen Taylor * gtk/gtktext.c (remove_cache_line): Fixed broken list-removal code. * gtk/gtktext.c: (gtk_text_delete_(forward/backward)_cahr) Check bounds before deleting. --- ChangeLog | 8 ++++++++ ChangeLog.pre-2-0 | 8 ++++++++ ChangeLog.pre-2-10 | 8 ++++++++ ChangeLog.pre-2-2 | 8 ++++++++ ChangeLog.pre-2-4 | 8 ++++++++ ChangeLog.pre-2-6 | 8 ++++++++ ChangeLog.pre-2-8 | 8 ++++++++ gtk/gtktext.c | 31 +++++++++++++++++-------------- 8 files changed, 73 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index d4c313a811..0efb63f26e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Thu Jun 11 13:09:00 1998 Owen Taylor + + * gtk/gtktext.c (remove_cache_line): Fixed broken + list-removal code. + + * gtk/gtktext.c: (gtk_text_delete_(forward/backward)_cahr) + Check bounds before deleting. + Wed Jun 10 23:21:33 1998 Owen Taylor * autogen.sh: Support ACLOCAL_FLAGS diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index d4c313a811..0efb63f26e 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,11 @@ +Thu Jun 11 13:09:00 1998 Owen Taylor + + * gtk/gtktext.c (remove_cache_line): Fixed broken + list-removal code. + + * gtk/gtktext.c: (gtk_text_delete_(forward/backward)_cahr) + Check bounds before deleting. + Wed Jun 10 23:21:33 1998 Owen Taylor * autogen.sh: Support ACLOCAL_FLAGS diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index d4c313a811..0efb63f26e 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,11 @@ +Thu Jun 11 13:09:00 1998 Owen Taylor + + * gtk/gtktext.c (remove_cache_line): Fixed broken + list-removal code. + + * gtk/gtktext.c: (gtk_text_delete_(forward/backward)_cahr) + Check bounds before deleting. + Wed Jun 10 23:21:33 1998 Owen Taylor * autogen.sh: Support ACLOCAL_FLAGS diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index d4c313a811..0efb63f26e 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,11 @@ +Thu Jun 11 13:09:00 1998 Owen Taylor + + * gtk/gtktext.c (remove_cache_line): Fixed broken + list-removal code. + + * gtk/gtktext.c: (gtk_text_delete_(forward/backward)_cahr) + Check bounds before deleting. + Wed Jun 10 23:21:33 1998 Owen Taylor * autogen.sh: Support ACLOCAL_FLAGS diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index d4c313a811..0efb63f26e 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,11 @@ +Thu Jun 11 13:09:00 1998 Owen Taylor + + * gtk/gtktext.c (remove_cache_line): Fixed broken + list-removal code. + + * gtk/gtktext.c: (gtk_text_delete_(forward/backward)_cahr) + Check bounds before deleting. + Wed Jun 10 23:21:33 1998 Owen Taylor * autogen.sh: Support ACLOCAL_FLAGS diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index d4c313a811..0efb63f26e 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,11 @@ +Thu Jun 11 13:09:00 1998 Owen Taylor + + * gtk/gtktext.c (remove_cache_line): Fixed broken + list-removal code. + + * gtk/gtktext.c: (gtk_text_delete_(forward/backward)_cahr) + Check bounds before deleting. + Wed Jun 10 23:21:33 1998 Owen Taylor * autogen.sh: Support ACLOCAL_FLAGS diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index d4c313a811..0efb63f26e 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,11 @@ +Thu Jun 11 13:09:00 1998 Owen Taylor + + * gtk/gtktext.c (remove_cache_line): Fixed broken + list-removal code. + + * gtk/gtktext.c: (gtk_text_delete_(forward/backward)_cahr) + Check bounds before deleting. + Wed Jun 10 23:21:33 1998 Owen Taylor * autogen.sh: Support ACLOCAL_FLAGS 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); } }