diff --git a/src/multiset.c b/src/multiset.c index 5eaedef7aee515903d43c023e2b407864df271b7..f09002dfda695d1b4319263320959ba15afe11bc 100644 --- a/src/multiset.c +++ b/src/multiset.c @@ -2,7 +2,7 @@ || This file is part of Pike. For copyright information see COPYRIGHT. || Pike is distributed under GPL, LGPL and MPL. See the file COPYING || for more information. -|| $Id: multiset.c,v 1.111 2008/05/11 14:55:53 mast Exp $ +|| $Id: multiset.c,v 1.112 2008/05/11 21:30:59 mast Exp $ */ #include "global.h" @@ -145,8 +145,13 @@ PMOD_EXPORT const char msg_multiset_no_node_refs[] = ((MSD_B)->cmp_less.type != T_INT && \ is_identical (&(MSD_A)->cmp_less, &(MSD_B)->cmp_less))) +union nodeptr { + union msnode *ms; + struct rb_node_hdr *rb; +}; + #define HDR(NODE) ((struct rb_node_hdr *) msnode_check (NODE)) -#define PHDR(NODEPTR) ((struct rb_node_hdr **) msnode_ptr_check (NODEPTR)) +#define PHDR(NODEPTR) (&((union nodeptr *) msnode_ptr_check (NODEPTR))->rb) #define RBNODE(NODE) ((union msnode *) rb_node_check (NODE)) #define INODE(NODE) ((union msnode *) msnode_ind_check (NODE)) #define IVNODE(NODE) ((union msnode *) msnode_indval_check (NODE))