From 3bce07ff62864cccfa195efe11bb042e4c11fbf2 Mon Sep 17 00:00:00 2001 From: Felix Arends Date: Mon, 24 Jun 2002 15:24:28 +0000 Subject: fixed propfonts bug which was related to illegal memory accesing of lcd_bitmap function called by lcd_clearrect. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1158 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/lcd.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'firmware/drivers/lcd.c') diff --git a/firmware/drivers/lcd.c b/firmware/drivers/lcd.c index e502c0c6b4..a228a6501b 100644 --- a/firmware/drivers/lcd.c +++ b/firmware/drivers/lcd.c @@ -644,10 +644,19 @@ void lcd_bitmap (unsigned char *src, int x, int y, int nx, int ny, bool clear) { unsigned char *dst; - unsigned char *dst2 = &display[x][y/8]; + unsigned char *dst2; unsigned int data, mask, mask2, mask3, mask4; - int shift = y & 7; + int shift; + if (((unsigned)x >= LCD_WIDTH) || ((unsigned)y >= LCD_HEIGHT)) + return; + if (((unsigned)(x + nx)) >= LCD_WIDTH) + nx = LCD_WIDTH - x; + if (((unsigned)(y + ny)) >= LCD_HEIGHT) + ny = LCD_HEIGHT - y; + + shift = y & 2; + dst2 = &display[x][y/8]; ny += shift; /* Calculate bit masks */ -- cgit v1.2.3