From f2859424cbdf23f6673fd4f3a9d7a5b197e0595e Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Tue, 27 Oct 2009 12:06:43 +0100 Subject: build (--enable-gcc-warnings): enable gcc's -Werror also in lib/ * configure.ac (GNULIB_WARN_CFLAGS): Define. * lib/Makefile.am (AM_CFLAGS): Use $(GNULIB_WARN_CFLAGS) rather than $(WARN_CFLAGS) and add $(WERROR_CFLAGS). * gl/lib/regcomp.c.diff: New file. * gl/lib/regex_internal.c.diff: New file. * gl/lib/regexec.c.diff: New file. --- gl/lib/regcomp.c.diff | 23 ++++++++++++++++++++++ gl/lib/regex_internal.c.diff | 25 ++++++++++++++++++++++++ gl/lib/regexec.c.diff | 45 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 93 insertions(+) create mode 100644 gl/lib/regcomp.c.diff create mode 100644 gl/lib/regex_internal.c.diff create mode 100644 gl/lib/regexec.c.diff (limited to 'gl/lib') diff --git a/gl/lib/regcomp.c.diff b/gl/lib/regcomp.c.diff new file mode 100644 index 000000000..88097a445 --- /dev/null +++ b/gl/lib/regcomp.c.diff @@ -0,0 +1,23 @@ +diff --git a/lib/regcomp.c b/lib/regcomp.c +index 6472ff6..fadf36d 100644 +--- a/lib/regcomp.c ++++ b/lib/regcomp.c +@@ -18,6 +18,8 @@ + with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + ++#include "intprops.h" ++#include "verify.h" + static reg_errcode_t re_compile_internal (regex_t *preg, const char * pattern, + size_t length, reg_syntax_t syntax); + static void re_compile_fastmap_iter (regex_t *bufp, +@@ -2571,7 +2573,8 @@ parse_dup_op (bin_tree_t *elem, re_string_t *regexp, re_dfa_t *dfa, + /* This loop is actually executed only when end != REG_MISSING, + to rewrite {0,n} as ((...?)?)?... We have + already created the start+1-th copy. */ +- if ((Idx) -1 < 0 || end != REG_MISSING) ++ verify (! TYPE_SIGNED (Idx)); ++ if (end != REG_MISSING) + for (i = start + 2; i <= end; ++i) + { + elem = duplicate_tree (elem, dfa); diff --git a/gl/lib/regex_internal.c.diff b/gl/lib/regex_internal.c.diff new file mode 100644 index 000000000..2cede3c07 --- /dev/null +++ b/gl/lib/regex_internal.c.diff @@ -0,0 +1,25 @@ +diff --git a/lib/regex_internal.c b/lib/regex_internal.c +index 904b88e..61c8d9d 100644 +--- a/lib/regex_internal.c ++++ b/lib/regex_internal.c +@@ -18,6 +18,8 @@ + with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + ++#include "verify.h" ++#include "intprops.h" + static void re_string_construct_common (const char *str, Idx len, + re_string_t *pstr, + RE_TRANSLATE_TYPE trans, bool icase, +@@ -1390,7 +1392,10 @@ static void + internal_function + re_node_set_remove_at (re_node_set *set, Idx idx) + { +- if (idx < 0 || idx >= set->nelem) ++ verify (! TYPE_SIGNED (Idx)); ++ /* if (idx < 0) ++ return; */ ++ if (idx >= set->nelem) + return; + --set->nelem; + for (; idx < set->nelem; idx++) diff --git a/gl/lib/regexec.c.diff b/gl/lib/regexec.c.diff new file mode 100644 index 000000000..5c985f940 --- /dev/null +++ b/gl/lib/regexec.c.diff @@ -0,0 +1,45 @@ +diff --git a/lib/regexec.c b/lib/regexec.c +index 21a8166..3b0d85c 100644 +--- a/lib/regexec.c ++++ b/lib/regexec.c +@@ -18,6 +18,8 @@ + with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + ++#include "verify.h" ++#include "intprops.h" + static reg_errcode_t match_ctx_init (re_match_context_t *cache, int eflags, + Idx n) internal_function; + static void match_ctx_clean (re_match_context_t *mctx) internal_function; +@@ -378,8 +380,11 @@ re_search_2_stub (struct re_pattern_buffer *bufp, + Idx len = length1 + length2; + char *s = NULL; + +- if (BE (length1 < 0 || length2 < 0 || stop < 0 || len < length1, 0)) +- return -2; ++ verify (! TYPE_SIGNED (Idx)); ++ if (BE (len < length1, 0)) ++ return -2; */ ++ /* if (BE (length1 < 0 || length2 < 0 || stop < 0, 0)) ++ return -2; */ + + /* Concatenate the strings. */ + if (length2 > 0) +@@ -431,11 +436,14 @@ re_search_stub (struct re_pattern_buffer *bufp, + Idx last_start = start + range; + + /* Check for out-of-range. */ +- if (BE (start < 0 || start > length, 0)) +- return -1; ++ verify (! TYPE_SIGNED (Idx)); ++ /* if (BE (start < 0, 0)) ++ return -1; */ ++ if (BE (start > length, 0)) ++ return -1; + if (BE (length < last_start || (0 <= range && last_start < start), 0)) + last_start = length; +- else if (BE (last_start < 0 || (range < 0 && start <= last_start), 0)) ++ else if (BE (/* last_start < 0 || */ (range < 0 && start <= last_start), 0)) + last_start = 0; + + __libc_lock_lock (dfa->lock); -- cgit v1.2.3-70-g09d2