@@ -554,7 +554,9 @@ bool qemu_opt_get_bool(QemuOpts *opts, const char *name, bool defval)
}
return defval;
}
- assert(opt->desc && opt->desc->type == QEMU_OPT_BOOL);
+ if (opt->desc) {
+ assert(opt->desc->type == QEMU_OPT_BOOL);
+ }
return opt->value.boolean;
}
@@ -576,7 +578,9 @@ uint64_t qemu_opt_get_number(QemuOpts *opts, const char *name, uint64_t defval)
}
return defval;
}
- assert(opt->desc && opt->desc->type == QEMU_OPT_NUMBER);
+ if (opt->desc) {
+ assert(opt->desc->type == QEMU_OPT_NUMBER);
+ }
return opt->value.uint;
}
@@ -596,7 +600,9 @@ uint64_t qemu_opt_get_size(QemuOpts *opts, const char *name, uint64_t defval)
}
return defval;
}
- assert(opt->desc && opt->desc->type == QEMU_OPT_SIZE);
+ if (opt->desc) {
+ assert(opt->desc->type == QEMU_OPT_SIZE);
+ }
return opt->value.uint;
}
In qemu_opt_set functions, if desc doen't exist but opts_accepts_any is true, it won't report error, but can still alloc an opt for the option and save it. However, after that, when doing qemu_opt_get, this option could be found in opts but opt->desc is NULL. This is correct, should not be treated as error. This patch would fix vvfat issue after changing to QemuOpts. Signed-off-by: Chunyan Liu <cyliu@suse.com> --- changes to v20: * fix Eric's comments: - checking opt->desc instead of removing the assertion util/qemu-option.c | 12 +++++++++--- 1 files changed, 9 insertions(+), 3 deletions(-)