Subject: [PATCH] Wrong initialization of fringe bitmap

From: Carlos Pita <[email-masked]>
Date: Mon, 14 Oct 2019 23:39:19 -0300

In fringe.c:1606 you have:

  xfb = xmalloc (sizeof fb + fb.height * BYTES_PER_BITMAP_ROW);
  fb.bits = b = ((unsigned short *)
ptr_bounds_clip (xfb + 1, fb.height * BYTES_PER_BITMAP_ROW));
  xfb = ptr_bounds_clip (xfb, sizeof *xfb);
  memset (b, 0, fb.height);

I might be wrong but it seems to me that the last line should be:

  memset (b, 0, fb.height * BYTES_PER_BITMAP_ROW);

instead.

I've attached a patch that does exactly that.

Best regards
--
Carlos
From fe3f040d6614ee4b990f3f4252c89d9a17c52845 Mon Sep 17 00:00:00 2001
From: memeplex <[email-masked]>
Date: Mon, 14 Oct 2019 23:33:37 -0300
Subject: [PATCH] Fix zero initialization of fringe bitmap

* src/fringe.c: the size in bytes of fb.bits is
    fb.height * BYTES_PER_BITMAP_ROW
  and not simply the number of rows fb.height.
---
 src/fringe.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/fringe.c b/src/fringe.c
index 22f3bdc..db91209 100644
--- a/src/fringe.c
+++ b/src/fringe.c
@@ -1607,7 +1607,7 @@ list (ALIGN PERIODIC) where PERIODIC non-nil specifies that the bitmap
   fb.bits = b = ((unsigned short *)
 		 ptr_bounds_clip (xfb + 1, fb.height * BYTES_PER_BITMAP_ROW));
   xfb = ptr_bounds_clip (xfb, sizeof *xfb);
-  memset (b, 0, fb.height);
+  memset (b, 0, fb.height * BYTES_PER_BITMAP_ROW);
 
   j = 0;
   while (j < fb.height)
-- 
2.20.1