>From 08d7f5cb9d2d087d17541256868219384693b645 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sat, 5 Dec 2020 11:51:23 +0100 Subject: [PATCH 4/6] parse-datetime: Use idx_t for nonnegative ptrdiff_t variables. * lib/parse-datetime.y: Include idx.h. (textint): Mark digits as nonnegative. (parser_control): Mark dates_seen, days_seen, local_zones_seen, dsts_seen, times_seen, zones_seen as nonnegative. (lookup_word): Mark wordlen as nonnegative. (yylex): Mark count as nonnegative. (parse_datetime2): Mark tzsize as nonnegative. * modules/parse-datetime (Depends-on): Add idx. --- ChangeLog | 12 ++++++++++++ lib/parse-datetime.y | 21 +++++++++++---------- modules/parse-datetime | 1 + 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 797f6d0..57dea1d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,17 @@ 2020-12-05 Bruno Haible + parse-datetime: Use idx_t for nonnegative ptrdiff_t variables. + * lib/parse-datetime.y: Include idx.h. + (textint): Mark digits as nonnegative. + (parser_control): Mark dates_seen, days_seen, local_zones_seen, + dsts_seen, times_seen, zones_seen as nonnegative. + (lookup_word): Mark wordlen as nonnegative. + (yylex): Mark count as nonnegative. + (parse_datetime2): Mark tzsize as nonnegative. + * modules/parse-datetime (Depends-on): Add idx. + +2020-12-05 Bruno Haible + fnmatch: Use idx_t for nonnegative ptrdiff_t variables. * lib/fnmatch.c: Include idx.h. In glibc, define idx_t directly. * lib/fnmatch_loop.c (EXT): Mark slen, new_used, plensize as diff --git a/lib/parse-datetime.y b/lib/parse-datetime.y index e8ed691..2b56db4 100644 --- a/lib/parse-datetime.y +++ b/lib/parse-datetime.y @@ -35,6 +35,7 @@ #include "parse-datetime.h" +#include "idx.h" #include "intprops.h" #include "timespec.h" #include "verify.h" @@ -139,7 +140,7 @@ typedef struct { bool negative; intmax_t value; - ptrdiff_t digits; + idx_t digits; } textint; /* An entry in the lexical lookup table. */ @@ -212,12 +213,12 @@ typedef struct /* Presence or counts of nonterminals of various flavors parsed so far. */ bool timespec_seen; bool rels_seen; - ptrdiff_t dates_seen; - ptrdiff_t days_seen; - ptrdiff_t local_zones_seen; - ptrdiff_t dsts_seen; - ptrdiff_t times_seen; - ptrdiff_t zones_seen; + idx_t dates_seen; + idx_t days_seen; + idx_t local_zones_seen; + idx_t dsts_seen; + idx_t times_seen; + idx_t zones_seen; bool year_seen; /* Print debugging output to stderr. */ @@ -1334,7 +1335,7 @@ lookup_word (parser_control const *pc, char *word) { char *p; char *q; - ptrdiff_t wordlen; + idx_t wordlen; table const *tp; bool period_found; bool abbrev; @@ -1514,7 +1515,7 @@ yylex (union YYSTYPE *lvalp, parser_control *pc) if (c != '(') return to_uchar (*pc->input++); - ptrdiff_t count = 0; + idx_t count = 0; do { c = *pc->input++; @@ -1750,7 +1751,7 @@ parse_datetime2 (struct timespec *result, char const *p, if (strncmp (p, "TZ=\"", 4) == 0) { char const *tzbase = p + 4; - ptrdiff_t tzsize = 1; + idx_t tzsize = 1; char const *s; for (s = tzbase; *s; s++, tzsize++) diff --git a/modules/parse-datetime b/modules/parse-datetime index a16b90f..820bc6c 100644 --- a/modules/parse-datetime +++ b/modules/parse-datetime @@ -15,6 +15,7 @@ c-ctype stdbool gettime gettext-h +idx intprops inttypes mktime -- 2.7.4