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