On Fri, Jul 04, 2025 at 10:12:33AM -0300, Fabiano Rosas wrote:

[...]

> >>> +static void tls_opt_to_str(StrOrNull **tls_opt)
> >>> +{
> >>> +    StrOrNull *opt = *tls_opt;
> >>> +
> >>> +    if (!opt) {
> >>> +        return;
> >>
> >> ... it can also be null.
> >>
> >
> > Hmm, I'll have to double check, but with the StrOrNull property being
> > initialized, NULL should not be possible. This looks like a mistake.
> >
> 
> The code is correct, this is coming from the QAPI, so it could be NULL
> in case the user hasn't provided the option. I'll use your suggested
> wording and the code suggestion as well.

One more trivial question:

> 
> >> Maybe
> >>
> >>    /* Normalize QTYPE_QNULL to QTYPE_QSTRING "" */
> >>
> >>> +    }
> >>> +
> >>> +    switch (opt->type) {
> >>> +    case QTYPE_QSTRING:
> >>> +        return;
> >>> +    case QTYPE_QNULL:
> >>> +        qobject_unref(opt->u.n);
> >>> +        break;
> >>> +    default:
> >>> +        g_assert_not_reached();
> >>> +    }
> >>> +
> >>> +    opt->type = QTYPE_QSTRING;
> >>> +    opt->u.s = g_strdup("");
> >>> +    *tls_opt = opt;

Does tls_opt ever change?   I wonder if this line is not needed, instead
tls_opt_to_str() can take an "StrOrNull *opt" directly.

> >>> +}
> >>
> >> I'd prefer something like
> >>
> >>        if (!opt || opt->type == QTYPE_QSTRING) {
> >>            return;
> >>        }
> >>        qobject_unref(opt->u.n);
> >>        opt->type = QTYPE_QSTRING;
> >>        opt->u.s = g_strdup("");
> >>        *tls_opt = opt;
> >>
> >> But this is clearly a matter of taste.
> 
> This is better indeed. I was moving back-and-forth between
> implementations and the code ended up a bit weird. Thanks!
> 

-- 
Peter Xu


Reply via email to