Re: return values of backend sub-main functions
Peter Eisentraut <peter_e@gmx.net>
From: Peter Eisentraut <peter_e@gmx.net>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2012-01-18T19:21:45Z
Lists: pgsql-hackers
On lör, 2012-01-07 at 16:41 -0500, Tom Lane wrote: > Peter Eisentraut <peter_e@gmx.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.