diff --git a/ChangeLog b/ChangeLog index c942cc668..abe03cd51 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2013-10-25 Vladimir Serbinenko + + * grub-core/normal/menu_entry.c (complete): Make sure that width is >0. + 2013-10-25 Vladimir Serbinenko Make char and string width grub_size_t rather than grub_ssize_t. diff --git a/grub-core/normal/menu_entry.c b/grub-core/normal/menu_entry.c index 58042404b..8ab9e753d 100644 --- a/grub-core/normal/menu_entry.c +++ b/grub-core/normal/menu_entry.c @@ -1029,12 +1029,14 @@ complete (struct screen *screen, int continuous, int update) if (restore) for (i = 0; i < screen->nterms; i++) { - int width = grub_term_width (screen->terms[i].term) - 2; + unsigned width = grub_term_width (screen->terms[i].term); + if (width > 2) + width -= 2; if (width > 15) width -= 6; - int num_sections = ((completion_buffer.len - + width - 1) - / width); + unsigned num_sections = ((completion_buffer.len + + width - 1) + / width); grub_uint32_t *endp; struct grub_term_coordinate pos; grub_uint32_t *p = ucs4;