summaryrefslogtreecommitdiff
path: root/modules/dfa
Commit message (Collapse)AuthorAgeFilesLines
* dfa: port to older GCCPaul Eggert2017-01-101-0/+1
| | | | | | | | | Problem reported by Assaf Gordon in: http://lists.gnu.org/archive/html/bug-gnulib/2017-01/msg00103.html * modules/c99: New module. This merely attempts to use the latest C version, which should be enough to solve this particular problem. The idea is to document which Gnulib modules assume C99 or later. * modules/dfa (Depends-on): Add it.
* dfa: fix some unlikely integer overflowsPaul Eggert2016-12-141-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I found these while reviewing the recent Coverity-related fix. This patch changes part of dfa.c to prefer ptrdiff_t instead of size_t for object counts. Using ptrdiff_t is the style typically used in Emacs; although it wastes a sign bit as sizes can never be negative, it makes -fsanitize=undefined more likely to catch integer overflows in index calculation, and nowadays the upside is typically more important than the downside. Although perhaps the rest of dfa.c should be changed to prefer ptrdiff_t as well (much of dfa.c already does, since it uses state_num which is signed), that is a bigger change and is not needed to fix the bugs I found. * lib/dfa.c: Include stdint.h and intprops.h. (TOKEN_MAX): New macro. (position_set, struct mb_char_classes, struct dfa, maybe_realloc) (charclass_index, parse_bracket_exp, addtok, insert, merge) (realloc_trans_if_necessary, free_mbdata): Use ptrdiff_t instead of size_t for object counts related to xpalloc. This is safe because xpalloc checks that the sizes do not exceed either SIZE_MAX or PTRDIFF_MAX. (xpalloc): New function, mostly taken from Emacs. (maybe_realloc, copy, realloc_trans_if_necessary): Use it. (maybe_realloc): Add NITEMS_MAX to signature. All callers changed. (charclass_index): Check for integer overflow in computing charclass index; it must not exceed TOKEN_MAX - CSET, as CSET is added to it later. (alloc_position_set): Check for integer overflow. On typical platforms this check has zero overhead, since the constant expression is false. (realloc_trans_if_necessary): Remove assertion, which I hope Coverity no longer needs. * modules/dfa (Depends-on): Add intprops, stdint.
* dfa: port to Solaris 9Paul Eggert2016-09-111-0/+1
| | | | | | | | | Problems reported by Tom G. Christensen in: http://lists.gnu.org/archive/html/bug-gnulib/2016-09/msg00031.html * modules/dfa (Depends-on): Add isblank. * modules/dfa-tests (dfa_match_aux_LDADD): Rename from test_stat_LDADD, to fix typo. * tests/dfa-match.sh: Don't require 'timeout'; use it if available.
* dfa: new module, importing grep's DFA matcherJim Meyering2016-09-091-0/+39
Since grep's DFA matcher is now being used by two gnulib-enabled projects, grep and sed, it makes sense to version-control its sources and unit tests in one place: here. * modules/dfa: New module. * modules/dfa-tests: New file. * lib/dfa.c: New file, from grep. * lib/dfa.h: Likewise. * lib/localeinfo.c: Likewise. * lib/localeinfo.h: Likewise. * tests/dfa-match-aux.c: Likewise. * tests/dfa-invalid-char-class.sh: Likewise. * tests/dfa-match.sh: Likewise, with minor changes. * MODULES.html.sh (Misc): Add "dfa" to this list.