data-in: Fix parsing time delimiters in parse_date().
[pspp] / src / data / data-in.c
index db99aa4fb896d9d8f99657b2e7c6caf41940948e..3f1f9e7075643b5bd86eabc7a57f01738a475f0a 100644 (file)
@@ -76,7 +76,11 @@ static int hexit_value (int c);
    Stores the parsed representation in OUTPUT, which the caller must have
    initialized with the given WIDTH (0 for a numeric field, otherwise the
    string width).  If FORMAT is FMT_A, then OUTPUT_ENCODING must specify the
-   correct encoding for OUTPUT (normally obtained via dict_get_encoding()). */
+   correct encoding for OUTPUT (normally obtained via dict_get_encoding()).
+
+   If successful NULL is the return value.  Otherwise a string describing
+   the problem is returned.  The caller must free this string.
+ */
 char *
 data_in (struct substring input, const char *input_encoding,
          enum fmt_type format,
@@ -919,7 +923,7 @@ parse_year (struct data_in *i, long *year, size_t max_digits)
       else
         *year += epoch_century + 100;
     }
-  if (*year >= 1582 || *year <= 19999)
+  if (*year >= 1582 && *year <= 19999)
     return NULL;
 
   return xasprintf (_("Year (%ld) must be between 1582 and 19999."), *year);
@@ -1181,6 +1185,7 @@ parse_date (struct data_in *i)
           break;
         case ':':
           error = parse_time_delimiter (i);
+          break;
         case ' ':
           if (i->format != FMT_MOYR)
             {