summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMagnus Holmgren <magnushol@gmail.com>2006-12-17 15:40:13 +0000
committerMagnus Holmgren <magnushol@gmail.com>2006-12-17 15:40:13 +0000
commitc0b28629565de55084a1c6c5d2ce387490032e7d (patch)
treec799b971d9c51f2a478bac4a6b919ed7bb9fbbbf
parent84a013ea419efd0373846741b812d7ccf78881b9 (diff)
downloadrockbox-c0b28629565de55084a1c6c5d2ce387490032e7d.tar.gz
rockbox-c0b28629565de55084a1c6c5d2ce387490032e7d.zip
Fix freeze/crash problems when scrolling very long strings (like filenames or tags).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11789 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/bidi.c4
-rw-r--r--firmware/export/lcd.h3
2 files changed, 4 insertions, 3 deletions
diff --git a/firmware/bidi.c b/firmware/bidi.c
index a6f6b8c5d9..b5851f298e 100644
--- a/firmware/bidi.c
+++ b/firmware/bidi.c
@@ -131,8 +131,8 @@ void arabjoin(unsigned short * stringprt, int length){
131unsigned short *bidi_l2v(const unsigned char *str, int orientation) 131unsigned short *bidi_l2v(const unsigned char *str, int orientation)
132{ 132{
133 int length = utf8length(str); 133 int length = utf8length(str);
134 static unsigned short utf16_buf[MAX_PATH+1]; 134 static unsigned short utf16_buf[SCROLL_LINE_SIZE];
135 static unsigned short bidi_buf[MAX_PATH+1]; 135 static unsigned short bidi_buf[SCROLL_LINE_SIZE];
136 unsigned short *heb_str, *target, *tmp; // *broken_str 136 unsigned short *heb_str, *target, *tmp; // *broken_str
137 int block_start, block_end, block_type, block_length, i; 137 int block_start, block_end, block_type, block_length, i;
138 //long max_chars=0; 138 //long max_chars=0;
diff --git a/firmware/export/lcd.h b/firmware/export/lcd.h
index 1ccbc513d2..3e1ea4430b 100644
--- a/firmware/export/lcd.h
+++ b/firmware/export/lcd.h
@@ -367,9 +367,10 @@ extern void lcd_bitmap_transparent(const fb_data *src, int x, int y,
367/* internal usage, but in multiple drivers */ 367/* internal usage, but in multiple drivers */
368#ifdef HAVE_LCD_BITMAP 368#ifdef HAVE_LCD_BITMAP
369#define SCROLL_SPACING 3 369#define SCROLL_SPACING 3
370#define SCROLL_LINE_SIZE (MAX_PATH + LCD_WIDTH/2 + SCROLL_SPACING + 2)
370 371
371struct scrollinfo { 372struct scrollinfo {
372 char line[MAX_PATH + LCD_WIDTH/2 + SCROLL_SPACING + 2]; 373 char line[SCROLL_LINE_SIZE];
373 int len; /* length of line in chars */ 374 int len; /* length of line in chars */
374 int width; /* length of line in pixels */ 375 int width; /* length of line in pixels */
375 int offset; 376 int offset;