Change 29487 by [EMAIL PROTECTED] on 2006/12/08 22:11:56
Assert that BmRARE, BmUSEFUL and BmPREVIOUS are only called on SVtPVBM
Affected files ...
... //depot/perl/sv.h#287 edit
Differences ...
==== //depot/perl/sv.h#287 (text) ====
Index: perl/sv.h
--- perl/sv.h#286~29248~ 2006-11-12 12:22:28.000000000 -0800
+++ perl/sv.h 2006-12-08 14:11:56.000000000 -0800
@@ -1300,9 +1300,27 @@
} \
} STMT_END
-#define BmRARE(sv) ((XPVBM*) SvANY(sv))->xbm_rare
-#define BmUSEFUL(sv) ((XPVBM*) SvANY(sv))->xbm_useful
-#define BmPREVIOUS(sv) ((XPVBM*) SvANY(sv))->xbm_previous
+#if defined (DEBUGGING) && defined(__GNUC__) &&
!defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
+# define BmRARE(sv) \
+ (*({ SV *const _svi = (SV *) (sv); \
+ assert(SvTYPE(_svi) == SVt_PVBM); \
+ &(((XPVBM*) SvANY(_svi))->xbm_rare); \
+ }))
+# define BmUSEFUL(sv) \
+ (*({ SV *const _svi = (SV *) (sv); \
+ assert(SvTYPE(_svi) == SVt_PVBM); \
+ &(((XPVBM*) SvANY(_svi))->xbm_useful); \
+ }))
+# define BmPREVIOUS(sv) \
+ (*({ SV *const _svi = (SV *) (sv); \
+ assert(SvTYPE(_svi) == SVt_PVBM); \
+ &(((XPVBM*) SvANY(_svi))->xbm_previous); \
+ }))
+#else
+# define BmRARE(sv) ((XPVBM*) SvANY(sv))->xbm_rare
+# define BmUSEFUL(sv) ((XPVBM*) SvANY(sv))->xbm_useful
+# define BmPREVIOUS(sv) ((XPVBM*) SvANY(sv))->xbm_previous
+#endif
#define FmLINES(sv) ((XPVFM*) SvANY(sv))->xfm_lines
End of Patch.