summaryrefslogtreecommitdiff
path: root/sv.h
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2006-12-11 21:15:06 +0000
committerNicholas Clark <nick@ccl4.org>2006-12-11 21:15:06 +0000
commit703a10d08f6fbbe216ef6b2375118b8cb03bc1e8 (patch)
treecbfb633e17f3a8638ecb901b05c9e3d525d25ee6 /sv.h
parentd8419e03da17b84a4daef4f24401907f1299763c (diff)
downloadperl-703a10d08f6fbbe216ef6b2375118b8cb03bc1e8.tar.gz
Assert that BmRARE() BmPREVIOUS() and BmUSEFUL() are only called on
valid PVBMs. p4raw-id: //depot/perl@29521
Diffstat (limited to 'sv.h')
-rw-r--r--sv.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/sv.h b/sv.h
index 379175a732..c919e93312 100644
--- a/sv.h
+++ b/sv.h
@@ -1314,17 +1314,20 @@ the scalar's value cannot change unless written to.
# define BmRARE(sv) \
(*({ SV *const _svi = (SV *) (sv); \
assert(SvTYPE(_svi) == SVt_PVBM); \
+ assert(SvVALID(_svi)); \
&(((XPVBM*) SvANY(_svi))->xbm_rare); \
}))
# define BmUSEFUL(sv) \
(*({ SV *const _svi = (SV *) (sv); \
assert(SvTYPE(_svi) == SVt_PVBM); \
+ assert(SvVALID(_svi)); \
assert(!SvIOK(_svi)); \
&(((XPVBM*) SvANY(_svi))->xiv_u.xivu_i32); \
}))
# define BmPREVIOUS(sv) \
(*({ SV *const _svi = (SV *) (sv); \
assert(SvTYPE(_svi) == SVt_PVBM); \
+ assert(SvVALID(_svi)); \
&(((XPVBM*) SvANY(_svi))->xbm_previous); \
}))
#else