diff --git a/src/nxt_time_parse.c b/src/nxt_time_parse.c index 63620b09b..1ac52fe4a 100644 --- a/src/nxt_time_parse.c +++ b/src/nxt_time_parse.c @@ -317,7 +317,6 @@ nxt_term_parse(const u_char *p, size_t len, nxt_bool_t seconds) enum { st_first_digit = 0, st_digit, - st_letter, st_space, } state; @@ -354,22 +353,17 @@ nxt_term_parse(const u_char *p, size_t len, nxt_bool_t seconds) state = st_first_digit; } - if (state != st_letter) { + /* Values below '0' become >= 208. */ + c = ch - '0'; - /* Values below '0' become >= 208. */ - c = ch - '0'; - - if (c <= 9) { - val = val * 10 + c; - state = st_digit; - continue; - } - - if (state == st_first_digit) { - return -1; - } + if (c <= 9) { + val = val * 10 + c; + state = st_digit; + continue; + } - state = st_letter; + if (state == st_first_digit) { + return -1; } switch (ch) { diff --git a/src/test/nxt_term_parse_test.c b/src/test/nxt_term_parse_test.c index 83ae49316..ceae3fe5b 100644 --- a/src/test/nxt_term_parse_test.c +++ b/src/test/nxt_term_parse_test.c @@ -23,6 +23,7 @@ static const nxt_term_parse_test_t terms[] = { { nxt_string("1w d"), 0, -1 }, { nxt_string("w"), 0, -1 }, { nxt_string("1d 1w"), 0, -1 }, + { nxt_string("1 "), 1, 1 }, { nxt_string("25d"), 0, -2 }, { nxt_string("300"), 1, 300 }, { nxt_string("300"), 0, 300000 },