From: | Peter Eisentraut <peter_e(at)gmx(dot)net> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: return values of backend sub-main functions |
Date: | 2012-01-18 19:21:45 |
Message-ID: | 1326914505.9180.6.camel@vanquo.pezone.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On lör, 2012-01-07 at 16:41 -0500, Tom Lane wrote:
> Peter Eisentraut <peter_e(at)gmx(dot)net> writes:
> > I suggest that we change PostgresMain(), PostmasterMain(), BackendRun(),
> > WalSenderMain(), and WalSndLoop() to return void as well.
>
> I agree this code is not very consistent or useful, but one question:
> what should the callers do if one of these functions *does* return?
I was thinking of a two-pronged approach: First, add
__attribute__((noreturn)) to the functions. This will cause a suitable
compiler to verify on a source-code level that nothing actually returns
from the function. And second, at the call site, put an abort(); /*
not reached */. Together, this will make the code cleaner and more
consistent, and will also help the compiler out a bit about the control
flow.
From | Date | Subject | |
---|---|---|---|
Next Message | Andres Freund | 2012-01-18 19:25:48 | Re: Command Triggers |
Previous Message | Tom Lane | 2012-01-18 19:21:03 | Re: lots of unused variable warnings in assert-free builds |