diff -up ext/date/lib/parse_iso_intervals.c.old ext/date/lib/parse_iso_intervals.c --- a/ext/date/lib/parse_iso_intervals.c.old 2013-11-08 18:22:12.225586458 +0100 +++ b/ext/date/lib/parse_iso_intervals.c 2013-11-08 18:22:47.484721897 +0100 @@ -380,7 +380,7 @@ yy6: break; } ptr++; - } while (*ptr); + } while (!s->errors->error_count && *ptr); s->have_period = 1; TIMELIB_DEINIT; return TIMELIB_PERIOD; diff -up ext/date/lib/parse_iso_intervals.re.old ext/date/lib/parse_iso_intervals.re --- a/ext/date/lib/parse_iso_intervals.re.old 2013-11-08 18:09:18.815549958 +0100 +++ b/ext/date/lib/parse_iso_intervals.re 2013-11-08 18:09:34.461608419 +0100 @@ -348,7 +348,7 @@ isoweek = year4 "-"? "W" weekof break; } ptr++; - } while (*ptr); + } while (!s->errors->error_count && *ptr); s->have_period = 1; TIMELIB_DEINIT; return TIMELIB_PERIOD;