+2012-06-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ regex: avoid warning when pointers are not long
+ * lib/regcomp.c (parse_dup_op, mark_opt_subexp): Cast between void *
+ and uintptr_t, not long, for portability to hosts where pointers and
+ long have different sizes. Issue noted by Daniel P. Berrange in
+ <http://lists.gnu.org/archive/html/bug-gnulib/2012-06/msg00122.html>
+ and fix suggested by Bruno Haible in
+ <http://lists.gnu.org/archive/html/bug-gnulib/2012-06/msg00128.html>.
+
2012-06-17 Bruno Haible <bruno@clisp.org>
dummy: Relicense into the public domain.
old_tree = NULL;
if (elem->token.type == SUBEXP)
- postorder (elem, mark_opt_subexp, (void *) (long) elem->token.opr.idx);
+ {
+ uintptr_t subidx = elem->token.opr.idx;
+ postorder (elem, mark_opt_subexp, (void *) subidx);
+ }
tree = create_tree (dfa, elem, NULL,
(end == REG_MISSING ? OP_DUP_ASTERISK : OP_ALT));
static reg_errcode_t
mark_opt_subexp (void *extra, bin_tree_t *node)
{
- Idx idx = (Idx) (long) extra;
+ Idx idx = (uintptr_t) extra;
if (node->token.type == SUBEXP && node->token.opr.idx == idx)
node->token.opt_subexp = 1;