diff options
author | Teruaki Kawashima <teru@rockbox.org> | 2010-02-14 05:00:41 +0000 |
---|---|---|
committer | Teruaki Kawashima <teru@rockbox.org> | 2010-02-14 05:00:41 +0000 |
commit | ed21ab1c8c9b16ec62933313c3d36a93d9255f62 (patch) | |
tree | 10726c64521435bcd190d07df2afc54c09fb54cd | |
parent | 59d13ccf682322a21062685d7f82e6a6a8f857f2 (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.c | 10 |
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(); |