diff --git a/ChangeLog b/ChangeLog index dadecec86..96cfb2ebf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2010-05-01 Vladimir Serbinenko + + * kern/mm.c (grub_real_malloc): Fix size calculation when extra == 0. + 2010-05-01 Christian Franke * util/grub-mkconfig_lib.in (make_system_path_relative_to_its_root): diff --git a/kern/mm.c b/kern/mm.c index a903991d6..d79f5ce29 100644 --- a/kern/mm.c +++ b/kern/mm.c @@ -251,13 +251,20 @@ grub_real_malloc (grub_mm_header_t *first, grub_size_t n, grub_size_t align) grub_mm_header_t r; p->magic = GRUB_MM_ALLOC_MAGIC; - p->size = n; r = p + extra + n; r->magic = GRUB_MM_FREE_MAGIC; r->size = p->size - extra - n; r->next = p->next; q->next = r; + + if (q == p) + { + q = r; + r->next = r; + } + + p->size = n; } else {