summaryrefslogtreecommitdiff
path: root/lib/parse-datetime.y
diff options
context:
space:
mode:
Diffstat (limited to 'lib/parse-datetime.y')
-rw-r--r--lib/parse-datetime.y10
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/parse-datetime.y b/lib/parse-datetime.y
index 67669f63..77d95b70 100644
--- a/lib/parse-datetime.y
+++ b/lib/parse-datetime.y
@@ -1,7 +1,7 @@
%{
/* Parse a string into an internal time stamp.
- Copyright (C) 1999-2000, 2002-2012 Free Software Foundation, Inc.
+ Copyright (C) 1999-2000, 2002-2013 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -113,6 +113,11 @@ typedef long int long_time_t;
typedef time_t long_time_t;
#endif
+/* Convert a possibly-signed character to an unsigned character. This is
+ a bit safer than casting to unsigned char, since it catches some type
+ errors that the cast doesn't. */
+static unsigned char to_uchar (char ch) { return ch; }
+
/* Lots of this code assumes time_t and time_t-like values fit into
long_time_t. */
verify (TYPE_MINIMUM (long_time_t) <= TYPE_MINIMUM (time_t)
@@ -1171,7 +1176,8 @@ yylex (YYSTYPE *lvalp, parser_control *pc)
}
if (c != '(')
- return *pc->input++;
+ return to_uchar (*pc->input++);
+
count = 0;
do
{