Re: What behavior is in this loop?

From: Heikki Linnakangas <hlinnakangas(at)vmware(dot)com>
To: KONDO Mitsumasa <kondo(dot)mitsumasa(at)lab(dot)ntt(dot)co(dot)jp>
Cc: PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: What behavior is in this loop?
Date: 2014-02-27 11:19:54
Message-ID: 530F1F5A.8090907@vmware.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 02/27/2014 12:38 PM, KONDO Mitsumasa wrote:
> I found interesting "for" and "while" loop in WaitForWALToBecomeAvailable() in
> xlog.c. Can you tell me this behavior?
>
> for (;;)
> {
> ~
> } while (StanbyMode)
>
> I confirmed this code is no problem in gcc compiler:)

Oh wow :-). That's clearly a thinko, although harmless in this case.
Looking at the git history, I made that mistake in commit abf5c5c9a.
Before that, there was no "while".

That's easier to understand with some extra formatting. That's two
loops, like this:

/* loop 1 */
for (;;)
{
...
}

/* loop2 */
while(StandbyMode);

The second loop is obviously completely pointless. Thankfully, the there
are no "breaks" inside the first loop (the ones within the
switch-statements don't count), so the endless while-loop is never reached.

I'll go fix that... Thanks for the report!

- Heikki

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2014-02-27 11:54:51 Re: jsonb and nested hstore
Previous Message Hannu Krosing 2014-02-27 11:19:46 Re: jsonb and nested hstore