From: Nicholas Clark Date: Fri, 24 Feb 2006 11:52:53 +0000 (+0000) Subject: Assert that GvSTASH is only called on PVGVs and PVLVs. X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=c72c5e99f3b78a3b5da264328bcba75e0ae7e88b;p=p5sagit%2Fp5-mst-13.2.git Assert that GvSTASH is only called on PVGVs and PVLVs. p4raw-id: //depot/perl@27307 --- diff --git a/gv.h b/gv.h index 250c7b9..da9da4a 100644 --- a/gv.h +++ b/gv.h @@ -38,9 +38,17 @@ struct gp { #define GvNAME(gv) (GvXPVGV(gv)->xgv_name) #define GvNAMELEN(gv) (GvXPVGV(gv)->xgv_namelen) -#define GvSTASH(gv) (GvXPVGV(gv)->xgv_stash) #define GvFLAGS(gv) (GvXPVGV(gv)->xgv_flags) +#if defined (DEBUGGING) && defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) +# define GvSTASH(gv) \ + (*({ GV *_gv = (GV *) gv; \ + assert(SvTYPE(_gv) == SVt_PVGV || SvTYPE(_gv) >= SVt_PVLV); \ + &(GvXPVGV(_gv)->xgv_stash); \ + })) +#else +#define GvSTASH(gv) (GvXPVGV(gv)->xgv_stash) +#endif /* =head1 GV Functions