grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: default menuentry matching similar entries is broken


From: Vladimir 'φ-coder/phcoder' Serbinenko
Subject: Re: default menuentry matching similar entries is broken
Date: Sat, 03 Mar 2012 19:20:06 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:8.0) Gecko/20120216 Icedove/8.0

On 03.03.2012 19:10, Andreas Vogel wrote:
Hi,

   This code in menu.c::menuentry_eq() looks wrong:

{
   const char *ptr1, *ptr2;
   ptr1 = title;
   ptr2 = spec;
   while (1)
     {
       if (*ptr2 == '>'&&  ptr2[1] != '>'&&  *ptr1 == 0)
         return 1;
       if (*ptr2 == '>'&&  ptr2[1] != '>')
         return 0;
       if (*ptr2 == '>')
         ptr2++;
       if (*ptr1 != *ptr2)
         return 0;
       if (*ptr1 == 0)<----
         return 1;
       ptr1++;
       ptr2++;
     }
}


   Specifically, if there are two menuentries that differ by adding characters, 
this function will match the wrong one, i.e.:

set default='entry a with more words'

menuentry "entry a" {
}

menuentry "entry a with more words" {
}
As far as I understand the code, using submenu references in the default
variable for automatic booting is not working at all.
This is due to the dynamic loading of submenus. When a menu is opened
and run, only the direct menu entries are known. Searching for menu
entries deeper in the menu tree is not done.
No need. When timeout is reached the submenu is executed and first element is discarded and the rest is searched for again.

--
Regards
Vladimir 'φ-coder/phcoder' Serbinenko




reply via email to

[Prev in Thread] Current Thread [Next in Thread]