Commit 19a4d43e authored by Eric Blake's avatar Eric Blake Committed by Paolo Bonzini
Browse files

chardev: Use goto/label instead of do/break/while(0)



Use of a do/while(0) control flow in order to permit an early break
is an unusual paradigm, and triggers a false positive with a planned
future syntax check against 'while (0);'.  Rewrite the code to use a
goto instead.  This patch temporarily keeps an extra level of
indentation to highlight the change; the next patch cleans it up.

Signed-off-by: default avatarEric Blake <eblake@redhat.com>
Message-Id: <20171201232433.25193-4-eblake@redhat.com>
Reviewed-by: default avatarMarc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent 94f5c480
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -64,9 +64,14 @@ static void tty_serial_init(int fd, int speed,
#endif
    tcgetattr(fd, &tty);

#define check_speed(val) if (speed <= val) { spd = B##val; break; }
#define check_speed(val) \
    if (speed <= val) {  \
        spd = B##val;    \
        goto done;       \
    }

    speed = speed * 10 / 11;
    do {
    {
        check_speed(50);
        check_speed(75);
        check_speed(110);
@@ -125,8 +130,10 @@ static void tty_serial_init(int fd, int speed,
        check_speed(4000000);
#endif
        spd = B115200;
    } while (0);
    }

#undef check_speed
 done:
    cfsetispeed(&tty, spd);
    cfsetospeed(&tty, spd);