summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTeruaki Kawashima <teru@rockbox.org>2010-02-14 05:00:41 +0000
committerTeruaki Kawashima <teru@rockbox.org>2010-02-14 05:00:41 +0000
commited21ab1c8c9b16ec62933313c3d36a93d9255f62 (patch)
tree10726c64521435bcd190d07df2afc54c09fb54cd
parent59d13ccf682322a21062685d7f82e6a6a8f857f2 (diff)
keyboard: check length of the last line. avoid dividing by 0.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24643 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/recorder/keyboard.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/apps/recorder/keyboard.c b/apps/recorder/keyboard.c
index d6a76d7b08..060393c269 100644
--- a/apps/recorder/keyboard.c
+++ b/apps/recorder/keyboard.c
@@ -157,7 +157,7 @@ static const unsigned char morse_codes[] = {
int load_kbd(unsigned char* filename)
{
int fd, l;
- int i = 0, line_len, max_line_len;
+ int i, line_len, max_line_len;
unsigned char buf[4];
if (filename == NULL)
@@ -171,7 +171,8 @@ int load_kbd(unsigned char* filename)
return 1;
line_len = 0;
- max_line_len = 0;
+ max_line_len = 1;
+ i = 0;
while (read(fd, buf, 1) == 1 && i < KBD_BUF_SIZE)
{
/* check how many bytes to read for this character */
@@ -215,6 +216,9 @@ int load_kbd(unsigned char* filename)
close(fd);
kbd_loaded = true;
+ if (max_line_len < line_len)
+ max_line_len = line_len;
+
FOR_NB_SCREENS(l)
{
struct keyboard_parameters *pm = &kbd_param[l];
@@ -948,6 +952,8 @@ static void kbd_calc_params(struct keyboard_parameters *pm,
i++;
}
}
+ if (pm->nchars == 0)
+ pm->kbd_buf[pm->nchars++] = ' ';
/* calculate pm->pages and pm->lines */
sc_h = sc->getheight();