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" { } The default that will be booted will the the first one, which is clearly wrong. Why was the *ptr1 == 0 code added? Also, what's the deal with the '>' characters? What are they supposed to do? I can't seem to find the use of '>' documented anywhere. Thanks, --S _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel