summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@gtk.org>1998-06-11 17:52:12 +0000
committerOwen Taylor <otaylor@src.gnome.org>1998-06-11 17:52:12 +0000
commitdbcf64a3f2894fe3bd3be126a4440b7a9104fdf1 (patch)
treec36d814c53667081245417946e8f25df46afe05d /gtk
parent0895f5b6697fca5d8e00f60997f38faa6149cdca (diff)
downloadgtk+-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.c31
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);
}
}