"Dr. David Alan Gilbert" <dgilb...@redhat.com> writes:

> * Markus Armbruster (arm...@redhat.com) wrote:
>> "Dr. David Alan Gilbert" <dgilb...@redhat.com> writes:
>> 
>> > * Markus Armbruster (arm...@redhat.com) wrote:
>> >> The has_FOO for pointer-valued FOO are redundant, except for arrays.
>> >> They are also a nuisance to work with.  Recent commit "qapi: Start to
>> >> elide redundant has_FOO in generated C" provided the means to elide
>> >> them step by step.  This is the step for qapi/misc.json.
>> >> 
>> >> Said commit explains the transformation in more detail.  The invariant
>> >> violations mentioned there do not occur here.
>> >> 
>> >> Cc: Dr. David Alan Gilbert <dgilb...@redhat.com>
>> >> Signed-off-by: Markus Armbruster <arm...@redhat.com>

[...]

>> >> diff --git a/util/qemu-config.c b/util/qemu-config.c
>> >> index 5325f6bf80..95f61fc883 100644
>> >> --- a/util/qemu-config.c
>> >> +++ b/util/qemu-config.c
>> >> @@ -80,14 +80,8 @@ static CommandLineParameterInfoList 
>> >> *query_option_descs(const QemuOptDesc *desc)
>> >>              break;
>> >>          }
>> >>  
>> >> -        if (desc[i].help) {
>> >> -            info->has_help = true;
>> >> -            info->help = g_strdup(desc[i].help);
>> >> -        }
>> >> -        if (desc[i].def_value_str) {
>> >> -            info->has_q_default = true;
>> >> -            info->q_default = g_strdup(desc[i].def_value_str);
>> >> -        }
>> >> +        info->help = g_strdup(desc[i].help);
>> >> +        info->q_default = g_strdup(desc[i].def_value_str);
>> >>  
>> >>          QAPI_LIST_PREPEND(param_list, info);
>> >>      }
>> >> @@ -245,8 +239,7 @@ static QemuOptsList machine_opts = {
>> >>      }
>> >>  };
>> >>  
>> >> -CommandLineOptionInfoList *qmp_query_command_line_options(bool 
>> >> has_option,
>> >> -                                                          const char 
>> >> *option,
>> >> +CommandLineOptionInfoList *qmp_query_command_line_options(const char 
>> >> *option,
>> >>                                                            Error **errp)
>> >>  {
>> >>      CommandLineOptionInfoList *conf_list = NULL;
>> >> @@ -254,7 +247,7 @@ CommandLineOptionInfoList 
>> >> *qmp_query_command_line_options(bool has_option,
>> >>      int i;
>> >>  
>> >>      for (i = 0; vm_config_groups[i] != NULL; i++) {
>> >> -        if (!has_option || !strcmp(option, vm_config_groups[i]->name)) {
>> >> +        if (!option || !strcmp(option, vm_config_groups[i]->name)) {
>> >
>> > I think that can be g_strcmp0 if you can convince yourself ->name is
>> > non-null
>> 
>> vm_config_groups[i] must not be null.
>> 
>> However, replacing the whole condition by !g_strcmp0() would be wrong:
>> 
>>     option                             |  null   ->name  neither
>>     -----------------------------------+------------------------
>>     !option || !strcmp(option, ->name) |  true     true    false
>>     g_strcmp0(option, ->name)          | false     true    false
>
> Oops yes, sorry these are the other way around as you point out.

I fell into the exact same trap myself :)

[...]


Reply via email to