[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [qemu-s390x] [RFC] error: auto propagated local_err
From: |
Eric Blake |
Subject: |
Re: [qemu-s390x] [RFC] error: auto propagated local_err |
Date: |
Thu, 19 Sep 2019 08:29:13 -0500 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 |
On 9/19/19 1:47 AM, Vladimir Sementsov-Ogievskiy wrote:
>> "The evaluations of the initialization list expressions are
>> indeterminately sequenced with respect to one another and thus the order
>> in which any side effects occur is unspecified."
>>
>> which does not bode well for the assignment to __auto_errp_prop.errp.
>> All changes to errp would have to be within the same initializer. Maybe:
>>
>> #define MAKE_ERRP_SAFE() \
>> g_auto(ErrorPropagator) __auto_errp_prop = { \
>> .local_err = (__auto_errp_prop.err = errp, \
>> (errp = &__auto_errp_prop.local_err), NULL) }
>
> Is it guaranteed that .errp will not be initialized to NULL after evaluating
> of
> .local_err initializer?
Probably not.
>
>>
>> but by the time you get that complicated, just using a statement is
>> easier to read.
Either two declarations (the second being an unused dummy variable
declared solely for its initializer's side-effects) or a declaration and
a statement are the only sane ways I can see to provide guaranteed
ordering. It's hidden behind a macro, so I don't care which.
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org
Re: [qemu-s390x] [RFC] error: auto propagated local_err, Kevin Wolf, 2019/09/19
Re: [qemu-s390x] [RFC] error: auto propagated local_err, Vladimir Sementsov-Ogievskiy, 2019/09/19
Re: [qemu-s390x] [RFC] error: auto propagated local_err, Kevin Wolf, 2019/09/19
Re: [qemu-s390x] [RFC] error: auto propagated local_err, Vladimir Sementsov-Ogievskiy, 2019/09/19
Re: [qemu-s390x] [RFC] error: auto propagated local_err, Eric Blake, 2019/09/19
Re: [qemu-s390x] [RFC] error: auto propagated local_err, Eric Blake, 2019/09/19