bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#39662: 28.0.50; Emacs crashes in x_cr_define_fringe_bitmap if (fring


From: Robert Pluim
Subject: bug#39662: 28.0.50; Emacs crashes in x_cr_define_fringe_bitmap if (fringe-mode 0)
Date: Wed, 26 Feb 2020 10:56:41 +0100

>>>>> On Wed, 19 Feb 2020 17:39:22 +0200, Eli Zaretskii <eliz@gnu.org> said:
    >> Maybe signaling an error is best :-)

    Eli> That was my original suggestion/tendency, so I obviously agree.

Dmitry, would the following work for you? Thereʼs a potential similar
issue with HEIGHT, but Iʼm not planning on touching that just yet.

diff --git a/src/fringe.c b/src/fringe.c
index 97aad843c2..2a46e3c34f 100644
--- a/src/fringe.c
+++ b/src/fringe.c
@@ -1500,7 +1500,8 @@ DEFUN ("define-fringe-bitmap", Fdefine_fringe_bitmap, 
Sdefine_fringe_bitmap,
 BITMAP is a symbol identifying the new fringe bitmap.
 BITS is either a string or a vector of integers.
 HEIGHT is height of bitmap.  If HEIGHT is nil, use length of BITS.
-WIDTH must be an integer between 1 and 16, or nil which defaults to 8.
+WIDTH must be an integer from 1 to 16, or nil which defaults to 8.  An
+error is signaled if WIDTH is outside this range.
 Optional fifth arg ALIGN may be one of `top', `center', or `bottom',
 indicating the positioning of the bitmap relative to the rows where it
 is used; the default is to center the bitmap.  Fifth arg may also be a
@@ -1535,7 +1536,9 @@ list (ALIGN PERIODIC) where PERIODIC non-nil specifies 
that the bitmap
   else
     {
       CHECK_FIXNUM (width);
-      fb.width = max (0, min (XFIXNUM (width), 255));
+      fb.width = max (1, min (XFIXNUM (width), 16));
+      if (fb.width != XFIXNUM (width))
+        args_out_of_range (width, build_string ("Width must be from 1 to 16"));
     }
 
   fb.period = 0;





reply via email to

[Prev in Thread] Current Thread [Next in Thread]