]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
Fixed bug which causes some commands to be masked
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Wed, 18 Nov 2009 17:54:23 +0000 (18:54 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Wed, 18 Nov 2009 17:54:23 +0000 (18:54 +0100)
normal/dyncmd.c

index 6e50289061f1f36c29eea3845e4d444437c35b29..edaf614b8a731195175184db9fce307906bfcdb3 100644 (file)
@@ -78,14 +78,22 @@ read_command_list (void)
          if (file)
            {
              char *buf = NULL;
+             grub_command_t ptr, last = 0, next;
 
              /* Override previous commands.lst.  */
-             while (grub_command_list)
+             for (ptr = grub_command_list; ptr; ptr = next)
                {
-                 grub_command_t tmp;
-                 tmp = grub_command_list->next;
-                 grub_free (grub_command_list);
-                 grub_command_list = tmp;
+                 next = ptr->next;
+                 if (ptr->func == grub_dyncmd_dispatcher)
+                   {
+                     if (last)
+                       last->next = ptr->next;
+                     else
+                       grub_command_list = ptr->next;
+                     grub_free (ptr);
+                   }
+                 else
+                   last = ptr;
                }
 
              for (;; grub_free (buf))