From b5df4900fcdd110221865e58afd7fa48286e2549 Mon Sep 17 00:00:00 2001
From: deuce <>
Date: Thu, 17 Mar 2005 02:30:49 +0000
Subject: [PATCH] Fix horrible errors in size of bitmap calculations... width
 is passed in BITS, not bytes.  Hopefully fixed (untested)

Thanks to Arpawolf for bringing this to my attention.  This bug affects all
X console programs (scfg, uedit, umonitor, syncterm, echocfg, sbbsinst, etc)
---
 src/conio/console.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/conio/console.c b/src/conio/console.c
index 8edcd13d3c..44298302d8 100644
--- a/src/conio/console.c
+++ b/src/conio/console.c
@@ -1207,13 +1207,16 @@ scale_bitmap(char *bitmap, int width, int height, int *multiplier)
 	char	*outbyte;
 	int		pos;
 	int		bmpsize;
+	int	bytesperline=1;
 
+	while(bytesperline*8<width)
+		bytesperline++;
 	if(*multiplier>MAX_SCALE)
 		*multiplier=MAX_SCALE;
 	if(*multiplier < 1)
 		*multiplier=1;
-	bmpsize=width*height;
-	ret=(char *)malloc(bmpsize*(*multiplier)*(*multiplier));
+	bmpsize=width*height/(8*bytesperline);
+	ret=(char *)malloc(bmpsize*(*multiplier)*(*multiplier)/(8*bytesperline));
 	if(ret==NULL)
 		return(NULL);
 	outbyte=ret;
-- 
GitLab