]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* kern/mm.c (grub_real_malloc): Fix size calculation when extra == 0.
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Mon, 3 May 2010 10:53:32 +0000 (12:53 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Mon, 3 May 2010 10:53:32 +0000 (12:53 +0200)
ChangeLog
kern/mm.c

index dadecec8673c602bdf245f6c3cdf6b44cceac447..96cfb2ebf9140dbaf93ee4d9307205bea1d87cd2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2010-05-01  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * kern/mm.c (grub_real_malloc): Fix size calculation when extra == 0.
+
 2010-05-01  Christian Franke  <franke@computer.org>
 
        * util/grub-mkconfig_lib.in (make_system_path_relative_to_its_root):
index a903991d6152c7ad52d0200b9e9b19a5a0ed27c5..d79f5ce29bfbc11c9d2d90566e1b54676ed0727a 100644 (file)
--- 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
            {