From f4bde95cc1eb6d36629163797a04d698d6e3b483 Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Sat, 21 Nov 2009 18:08:00 +0100 Subject: [PATCH] maint: avoid warnings via patched versions of gnulib's regex functions * gl/lib/regcomp.c.diff: New file. * gl/lib/regex_internal.c.diff: Likewise. * gl/lib/regex_internal.h.diff: Likewise. * gl/lib/regexec.c.diff: Likewise. --- gl/lib/regcomp.c.diff | 82 ++++++++++++++++++++++++++++++++++++ gl/lib/regex_internal.c.diff | 25 +++++++++++ gl/lib/regex_internal.h.diff | 14 ++++++ gl/lib/regexec.c.diff | 45 ++++++++++++++++++++ 4 files changed, 166 insertions(+) create mode 100644 gl/lib/regcomp.c.diff create mode 100644 gl/lib/regex_internal.c.diff create mode 100644 gl/lib/regex_internal.h.diff create mode 100644 gl/lib/regexec.c.diff diff --git a/gl/lib/regcomp.c.diff b/gl/lib/regcomp.c.diff new file mode 100644 index 0000000..a31c39f --- /dev/null +++ b/gl/lib/regcomp.c.diff @@ -0,0 +1,82 @@ +diff --git c/lib/regcomp.c i/lib/regcomp.c +index 6472ff6..665b2ab 100644 +--- c/lib/regcomp.c ++++ i/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, +@@ -541,7 +543,7 @@ regerror (errcode, preg, errbuf, errbuf_size) + size_t errbuf_size; + #else /* size_t might promote */ + size_t +-regerror (int errcode, const regex_t *_Restrict_ preg, ++regerror (int errcode, const regex_t *_Restrict_ preg _UNUSED_PARAMETER_, + char *_Restrict_ errbuf, size_t errbuf_size) + #endif + { +@@ -1375,7 +1377,7 @@ calc_first (void *extra, bin_tree_t *node) + + /* Pass 2: compute NEXT on the tree. Preorder visit. */ + static reg_errcode_t +-calc_next (void *extra, bin_tree_t *node) ++calc_next (void *extra _UNUSED_PARAMETER_, bin_tree_t *node) + { + switch (node->token.type) + { +@@ -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); +@@ -2731,7 +2734,8 @@ static reg_errcode_t + internal_function + build_collating_symbol (bitset_t sbcset, + # ifdef RE_ENABLE_I18N +- re_charset_t *mbcset, Idx *coll_sym_alloc, ++ re_charset_t *mbcset _UNUSED_PARAMETER_, ++ Idx *coll_sym_alloc _UNUSED_PARAMETER_, + # endif + const unsigned char *name) + { +@@ -3309,7 +3313,8 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token, + + static reg_errcode_t + parse_bracket_element (bracket_elem_t *elem, re_string_t *regexp, +- re_token_t *token, int token_len, re_dfa_t *dfa, ++ re_token_t *token, int token_len, ++ re_dfa_t *dfa _UNUSED_PARAMETER_, + reg_syntax_t syntax, bool accept_hyphen) + { + #ifdef RE_ENABLE_I18N +@@ -3396,8 +3401,9 @@ parse_bracket_symbol (bracket_elem_t *elem, re_string_t *regexp, + + static reg_errcode_t + #ifdef RE_ENABLE_I18N +-build_equiv_class (bitset_t sbcset, re_charset_t *mbcset, +- Idx *equiv_class_alloc, const unsigned char *name) ++build_equiv_class (bitset_t sbcset, re_charset_t *mbcset _UNUSED_PARAMETER_, ++ Idx *equiv_class_alloc _UNUSED_PARAMETER_, ++ const unsigned char *name) + #else /* not RE_ENABLE_I18N */ + build_equiv_class (bitset_t sbcset, const unsigned char *name) + #endif /* not RE_ENABLE_I18N */ +@@ -3798,7 +3804,7 @@ free_token (re_token_t *node) + and its children. */ + + static reg_errcode_t +-free_tree (void *extra, bin_tree_t *node) ++free_tree (void *extra _UNUSED_PARAMETER_, bin_tree_t *node) + { + free_token (&node->token); + return REG_NOERROR; diff --git a/gl/lib/regex_internal.c.diff b/gl/lib/regex_internal.c.diff new file mode 100644 index 0000000..2cede3c --- /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/regex_internal.h.diff b/gl/lib/regex_internal.h.diff new file mode 100644 index 0000000..d1506a6 --- /dev/null +++ b/gl/lib/regex_internal.h.diff @@ -0,0 +1,14 @@ +diff --git i/lib/regex_internal.h w/lib/regex_internal.h +index 859832f..3c7fe06 100644 +--- i/lib/regex_internal.h ++++ w/lib/regex_internal.h +@@ -826,7 +826,8 @@ re_string_wchar_at (const re_string_t *pstr, Idx idx) + + static int + internal_function __attribute ((pure)) +-re_string_elem_size_at (const re_string_t *pstr, Idx idx) ++re_string_elem_size_at (const re_string_t *pstr _UNUSED_PARAMETER_, ++ Idx idx _UNUSED_PARAMETER_) + { + # ifdef _LIBC + const unsigned char *p, *extra; diff --git a/gl/lib/regexec.c.diff b/gl/lib/regexec.c.diff new file mode 100644 index 0000000..d9b6d1c --- /dev/null +++ b/gl/lib/regexec.c.diff @@ -0,0 +1,45 @@ +diff --git a/lib/regexec.c b/lib/regexec.c +index 21a8166..7762437 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);