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:
parent
de0092a1e9
commit
8e16853201
10
src/utils.c
10
src/utils.c
@ -785,11 +785,10 @@ int parse_duration(const char *string, unsigned *duration)
|
|||||||
|
|
||||||
/* parse string using a simple state machine */
|
/* parse string using a simple state machine */
|
||||||
for (p = string; *p; p++) {
|
for (p = string; *p; p++) {
|
||||||
if ((*p >= '0') && (*p <= '9')) {
|
if (state == STATE_DONE) {
|
||||||
if (state == STATE_DONE)
|
return 0;
|
||||||
return 0;
|
} else if ((*p >= '0') && (*p <= '9')) {
|
||||||
else
|
in = in * 10 + (int)(*p - '0');
|
||||||
in = in * 10 + (int)(*p - '0');
|
|
||||||
} else {
|
} else {
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case STATE_INITIAL:
|
case STATE_INITIAL:
|
||||||
@ -826,7 +825,6 @@ int parse_duration(const char *string, unsigned *duration)
|
|||||||
return 0;
|
return 0;
|
||||||
break;
|
break;
|
||||||
case STATE_HHMM_MM:
|
case STATE_HHMM_MM:
|
||||||
case STATE_DONE:
|
|
||||||
return 0;
|
return 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user