From 4fcdcc2e50a69f92388af41b1069d2b7b7eceb51 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Mon, 21 Oct 2024 06:43:09 +0200 Subject: [PATCH] textview: Don't overflow Both numbers are unsigned, so the result is always unsigned. (Which also means ABS() doing a < 0 check doesn't work.) And that in particular means that end - begin overflows to a very large number when begin > end. --- gtk/gtktexthistory.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gtk/gtktexthistory.c b/gtk/gtktexthistory.c index 732973b99d..53cab1cbb6 100644 --- a/gtk/gtktexthistory.c +++ b/gtk/gtktexthistory.c @@ -1194,7 +1194,7 @@ gtk_text_history_text_deleted (GtkTextHistory *self, action->u.delete.end = end; action->u.delete.selection.insert = self->selection.insert; action->u.delete.selection.bound = self->selection.bound; - istring_set (&action->u.delete.istr, text, len, ABS (end - begin)); + istring_set (&action->u.delete.istr, text, len, MAX (end, begin) - MIN (end, begin)); gtk_text_history_push (self, action); }