From: Nicholas Clark Date: Mon, 20 Feb 2006 10:10:11 +0000 (+0000) Subject: Abolish BROKEN_UNION_INIT in B::C, as it works around problems in X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=7c60e4340985406f3dd47ad08209883de1b8aa3b;p=p5sagit%2Fp5-mst-13.2.git Abolish BROKEN_UNION_INIT in B::C, as it works around problems in pre-ANSI C compilers, but pays in code duplication. p4raw-id: //depot/perl@27240 --- diff --git a/cv.h b/cv.h index dd68f52..9f2594a 100644 --- a/cv.h +++ b/cv.h @@ -8,8 +8,7 @@ * */ -/* This structure must match XPVCV in B/C.pm and the beginning of XPVFM - * in sv.h */ +/* This structure must the beginning of XPVFM in sv.h */ struct xpvcv { NV xnv_nv; /* numeric value, if any */ diff --git a/ext/B/B/C.pm b/ext/B/B/C.pm index 1179767..17ca257 100644 --- a/ext/B/B/C.pm +++ b/ext/B/B/C.pm @@ -8,7 +8,7 @@ package B::C; -our $VERSION = '1.04'; +our $VERSION = '1.05'; package B::C::Section; @@ -1416,46 +1416,11 @@ sub output_declarations { #endif /* BROKEN_STATIC_REDECL */ #ifdef BROKEN_UNION_INIT -/* - * Cribbed from cv.h with ANY (a union) replaced by void*. - * Some pre-Standard compilers can't cope with initialising unions. Ho hum. - */ -typedef struct { - STRLEN xpv_cur; /* length of xp_pv as a C string */ - STRLEN xpv_len; /* allocated size */ - IV xof_off; /* integer value */ - NV xnv_nv; /* numeric value, if any */ - MAGIC* xmg_magic; /* magic for scalar array */ - HV* xmg_stash; /* class package */ - - HV * xcv_stash; - OP * xcv_start; - OP * xcv_root; - void (*xcv_xsub) (pTHX_ CV*); - ANY xcv_xsubany; - GV * xcv_gv; - char * xcv_file; - long xcv_depth; /* >= 2 indicates recursive call */ - AV * xcv_padlist; - CV * xcv_outside; -EOT - print <<'EOT' if $] < 5.009; -#ifdef USE_5005THREADS - perl_mutex *xcv_mutexp; - struct perl_thread *xcv_owner; /* current owner thread */ -#endif /* USE_5005THREADS */ -EOT - print <<'EOT'; - cv_flags_t xcv_flags; - U32 xcv_outside_seq; /* the COP sequence (at the point of our - * compilation) in the lexically enclosing - * sub */ -} XPVCV_or_similar; -#define ANYINIT(i) i -#else +#error BROKEN_UNION_INIT no longer needed, as Perl requires an ANSI compiler +#endif + #define XPVCV_or_similar XPVCV #define ANYINIT(i) {i} -#endif /* BROKEN_UNION_INIT */ #define Nullany ANYINIT(0) #define UNUSED 0