From ef450258db9bcbce05f5fd8c652ea37305ef0c3c Mon Sep 17 00:00:00 2001 From: Luis Kornblueh <luis.kornblueh@zmaw.de> Date: Tue, 27 Jan 2015 12:10:50 +0100 Subject: [PATCH] Fix problem with strtol and errno. --- src/mtime_iso8601.rl | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/mtime_iso8601.rl b/src/mtime_iso8601.rl index 12d3d269..618956a5 100644 --- a/src/mtime_iso8601.rl +++ b/src/mtime_iso8601.rl @@ -110,14 +110,15 @@ date_machine( char *str, ISO8601_STATUS* stat, struct internal_datetime* dtObj, _year[0] = '-'; char *end; - dtObj->year = strtol(_year,&end, 10); - + dtObj->year = strtol(_year, &end, 10); + //TODO on LUIS: Should we have similar range checks on duration long strings now that we support arbitrariry strigs like PT1000202S? /* Year might be too large. */ - if ((errno == ERANGE) || (dtObj->year > YEAR_UPPER_BOUND) || (dtObj->year < YEAR_LOWER_BOUND)) - { - RAISE_YEAR_OUT_OF_BOUND_EXCEPTION = true; - } + if (end == _year) + if ((errno == ERANGE) || (dtObj->year > YEAR_UPPER_BOUND) || (dtObj->year < YEAR_LOWER_BOUND)) + { + RAISE_YEAR_OUT_OF_BOUND_EXCEPTION = true; + } } action year_month_copy -- GitLab