Hi,
On 2020-04-23 08:57:39 -0400, Robert Haas wrote:
> On Sun, Apr 5, 2020 at 3:31 PM Andres Freund <andres@anarazel.de> wrote:
> > The warnings don't seem too unreasonable. The compiler can't see that
> > the error_cb inside json_manifest_parse_failure() is not expected to
> > return. Probably worth adding a wrapper around the calls to
> > context->error_cb and mark that as noreturn.
>
> Eh, how? The callback is declared as:
>
> typedef void (*json_manifest_error_callback)(JsonManifestParseContext *,
> char
> *fmt, ...) pg_attribute_printf(2, 3);
>
> I don't know of a way to create a wrapper around that, because of the
> variable argument list.
Didn't think that far...
> We could change the callback to take va_list, I guess.
I'd argue that that'd be a good idea anyway, otherwise there's no way to
wrap the invocation anywhere in the code. But that's an independent
consideration, as:
> Does it work for you to just add pg_attribute_noreturn() to this
> typedef, as in the attached?
does fix the problem for me, cool.
Do you not see a warning when compiling with optimizations enabled?
Greetings,
Andres Freund