* lib/regcomp.c (re_compile_fastmap_iter, init_dfa, init_word_char):
authorPaul Eggert <eggert@cs.ucla.edu>
Wed, 31 Aug 2005 19:38:13 +0000 (19:38 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Wed, 31 Aug 2005 19:38:13 +0000 (19:38 +0000)
commitec469199fa07f362e581b64ef06921e7764caebe
tree0fa7d765ca626d8e1c0cd94156e44529cce84dd4
parentaf36f47f7663cb1715a89bbaadcfe56d54c25d14
* lib/regcomp.c (re_compile_fastmap_iter, init_dfa, init_word_char):
(optimize_subexps, lower_subexp):
Don't assume 1<<31 has defined behavior on hosts with 32-bit int,
since the signed shift might overflow.  Use 1u<<31 instead.
* lib/regex_internal.h (bitset_set, bitset_clear, bitset_contain):
Likewise.
* lib/regexec.c (check_dst_limits_calc_pos_1):
(check_subexp_matching_top): Likewise.
* lib/regcomp.c (optimize_subexps, lower_subexp):
Use CHAR_BIT rather than 8, for clarity.
* lib/regexec.c (check_dst_limits_calc_pos_1):
(check_subexp_matching_top): Likewise.
* lib/regcomp.c (init_dfa): Make table_size unsigned, so that we don't
have to worry about portability issues when shifting it left.
Remove no-longer-needed test for table_size > 0.
* lib/regcomp.c (parse_sub_exp): Do not shift more bits than there are
in a word, as the resulting behavior is undefined.
* lib/regexec.c (check_dst_limits_calc_pos_1): Likewise;
in one case, a <= should have been an <, and in another case the
whole test was missing.
* lib/regex_internal.h (BYTE_BITS): Remove.  All uses changed to
the standard name CHAR_BIT.
* lib/regexec.c (match_ctx_add_entry): Don't assume that ~0 == -1;
this is not true on one's complement and signed-magnitude hosts.
lib/ChangeLog
lib/regcomp.c
lib/regex_internal.h
lib/regexec.c