]> git.ozlabs.org Git - petitboot/blobdiff - discover/grub2/script.c
discover/grub2: Allow using title for default even if id was defined
[petitboot] / discover / grub2 / script.c
index 1a802b97943ee951fa2487873becd04016d43463..c910bf8bc1a28bf86901459b11d7a99ad059bc35 100644 (file)
@@ -117,12 +117,10 @@ static bool option_is_default(struct grub2_script *script,
        if (end != var && *end == '\0')
                return default_idx == script->n_options;
 
-       /* if we don't have an explicit id for this option, fall back to
-        * the name */
-       if (!id)
-               id = opt->option->name;
+       if (id && !strcmp(id, var))
+               return true;
 
-       return !strcmp(id, var);
+       return !strcmp(opt->option->name, var);
 }
 
 static void append_text_to_current_arg(struct grub2_argv *argv,
@@ -227,7 +225,7 @@ static void process_expansions(struct grub2_script *script,
        }
 
        /* we may have allocated an extra argv element but not populated it */
-       if (!argv->argv[argv->argc - 1])
+       if (argv->argv && !argv->argv[argv->argc - 1])
                argv->argc--;
 }
 
@@ -489,6 +487,9 @@ void script_execute(struct grub2_script *script)
 {
        struct discover_boot_option *opt, *tmp;
 
+       if (!script)
+               return;
+
        init_env(script);
        statements_execute(script, script->statements);