summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dump.c7
-rw-r--r--ext/Devel/Peek/t/Peek.t2
-rw-r--r--sv.h3
3 files changed, 7 insertions, 5 deletions
diff --git a/dump.c b/dump.c
index 2c6aa23ed2..478cc17f1f 100644
--- a/dump.c
+++ b/dump.c
@@ -1281,8 +1281,9 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo
SvREFCNT_dec(d);
return;
}
- if (type == SVt_IV || (type >= SVt_PVIV && type != SVt_PVAV
- && type != SVt_PVHV && type != SVt_PVCV)) {
+ if ((type >= SVt_PVIV && type != SVt_PVAV && type != SVt_PVHV
+ && type != SVt_PVCV && !isGV_with_GP(sv))
+ || type == SVt_IV) {
if (SvIsUV(sv)
#ifdef PERL_OLD_COPY_ON_WRITE
|| SvIsCOW(sv)
@@ -1302,7 +1303,7 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo
PerlIO_putc(file, '\n');
}
if ((type >= SVt_PVNV && type != SVt_PVAV && type != SVt_PVHV
- && type != SVt_PVCV && type != SVt_PVFM)
+ && type != SVt_PVCV && type != SVt_PVFM && !isGV_with_GP(sv))
|| type == SVt_NV) {
STORE_NUMERIC_LOCAL_SET_STANDARD();
/* %Vg doesn't work? --jhi */
diff --git a/ext/Devel/Peek/t/Peek.t b/ext/Devel/Peek/t/Peek.t
index fdf57a9e89..f40bc5e075 100644
--- a/ext/Devel/Peek/t/Peek.t
+++ b/ext/Devel/Peek/t/Peek.t
@@ -306,8 +306,6 @@ do_test(17,
'SV = PVGV\\($ADDR\\) at $ADDR
REFCNT = 5
FLAGS = \\(SCREAM,MULTI(?:,IN_PAD)?\\)
- IV = 0
- NV = 0
NAME = "a"
NAMELEN = 1
GvSTASH = $ADDR\\t"main"
diff --git a/sv.h b/sv.h
index c509ac6649..1d62a88597 100644
--- a/sv.h
+++ b/sv.h
@@ -1019,6 +1019,7 @@ in gv.h: */
assert(SvTYPE(_svi) != SVt_PVAV); \
assert(SvTYPE(_svi) != SVt_PVHV); \
assert(SvTYPE(_svi) != SVt_PVCV); \
+ assert(!isGV_with_GP(_svi)); \
&(((XPVIV*) SvANY(_svi))->xiv_iv); \
}))
# define SvUVX(sv) \
@@ -1027,6 +1028,7 @@ in gv.h: */
assert(SvTYPE(_svi) != SVt_PVAV); \
assert(SvTYPE(_svi) != SVt_PVHV); \
assert(SvTYPE(_svi) != SVt_PVCV); \
+ assert(!isGV_with_GP(_svi)); \
&(((XPVUV*) SvANY(_svi))->xuv_uv); \
}))
# define SvNVX(sv) \
@@ -1035,6 +1037,7 @@ in gv.h: */
assert(SvTYPE(_svi) != SVt_PVAV); \
assert(SvTYPE(_svi) != SVt_PVHV); \
assert(SvTYPE(_svi) != SVt_PVFM); \
+ assert(!isGV_with_GP(_svi)); \
&(((XPVNV*) SvANY(_svi))->xnv_nv); \
}))
# define SvMAGIC(sv) \