parse_duration(): Bail out early in final state

Bail out early if we are reading a character while being in a final
state.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
This commit is contained in:
Lukas Fleischer 2013-02-14 12:22:34 +01:00
parent de0092a1e9
commit 8e16853201

View File

@ -785,11 +785,10 @@ int parse_duration(const char *string, unsigned *duration)
/* parse string using a simple state machine */
for (p = string; *p; p++) {
if ((*p >= '0') && (*p <= '9')) {
if (state == STATE_DONE)
return 0;
else
in = in * 10 + (int)(*p - '0');
if (state == STATE_DONE) {
return 0;
} else if ((*p >= '0') && (*p <= '9')) {
in = in * 10 + (int)(*p - '0');
} else {
switch (state) {
case STATE_INITIAL:
@ -826,7 +825,6 @@ int parse_duration(const char *string, unsigned *duration)
return 0;
break;
case STATE_HHMM_MM:
case STATE_DONE:
return 0;
break;
}