use Devel::Peek;
-print "1..21\n";
+print "1..22\n";
our $DEBUG = 0;
open(SAVERR, ">&STDERR") or die "Can't dup STDERR: $!";
$c = 456,
'SV = IV\\($ADDR\\) at $ADDR
REFCNT = 1
- FLAGS = \\(PADBUSY,PADMY,IOK,pIOK\\)
+ FLAGS = \\(PADMY,IOK,pIOK\\)
IV = 456');
# If perl is built with PERL_PRESERVE_IVUV then maths is done as integers
RV = $ADDR
SV = PVCV\\($ADDR\\) at $ADDR
REFCNT = 2
- FLAGS = \\(PADBUSY,PADMY,POK,pPOK,ANON\\)
+ FLAGS = \\(PADMY,POK,pPOK,ANON,WEAKOUTSIDE\\)
IV = 0
NV = 0
PROTOTYPE = ""
DEPTH = 0
(?: MUTEXP = $ADDR
OWNER = $ADDR
-)? FLAGS = 0x4
+)? FLAGS = 0x404
+ OUTSIDE_SEQ = \\d+
PADLIST = $ADDR
PADNAME = $ADDR\\($ADDR\\) PAD = $ADDR\\($ADDR\\)
OUTSIDE = $ADDR \\(MAIN\\)');
(?: MUTEXP = $ADDR
OWNER = $ADDR
)? FLAGS = 0x0
+ OUTSIDE_SEQ = \\d+
PADLIST = $ADDR
PADNAME = $ADDR\\($ADDR\\) PAD = $ADDR\\($ADDR\\)
- \\d+\\. $ADDR<\\d+> \\(\\d+,\\d+\\) "\\$pattern"
- \\d+\\. $ADDR<\\d+> FAKE \\(\\d+,\\d+\\) "\\$DEBUG"
- \\d+\\. $ADDR<\\d+> \\(\\d+,\\d+\\) "\\$dump"
+ \\d+\\. $ADDR<\\d+> \\(\\d+,\\d+\\) "\\$pattern"
+ \\d+\\. $ADDR<\\d+> FAKE "\\$DEBUG" flags=0x0 index=0
+ \\d+\\. $ADDR<\\d+> \\(\\d+,\\d+\\) "\\$dump"
OUTSIDE = $ADDR \\(MAIN\\)');
do_test(15,
RV = $ADDR
SV = PVMG\\($ADDR\\) at $ADDR
REFCNT = 1
- FLAGS = \\(OBJECT,RMG\\)
+ FLAGS = \\(OBJECT,SMG\\)
IV = 0
NV = 0
PV = 0
chr(256).chr(0).chr(512),
'SV = PV\\($ADDR\\) at $ADDR
REFCNT = 1
- FLAGS = \\((?:PADBUSY,PADTMP,)?POK,READONLY,pPOK,UTF8\\)
+ FLAGS = \\((?:PADTMP,)?POK,READONLY,pPOK,UTF8\\)
PV = $ADDR "\\\214\\\101\\\0\\\235\\\101"\\\0 \[UTF8 "\\\x\{100\}\\\x\{0\}\\\x\{200\}"\]
CUR = 5
LEN = \\d+');
chr(256).chr(0).chr(512),
'SV = PV\\($ADDR\\) at $ADDR
REFCNT = 1
- FLAGS = \\((?:PADBUSY,PADTMP,)?POK,READONLY,pPOK,UTF8\\)
+ FLAGS = \\((?:PADTMP,)?POK,READONLY,pPOK,UTF8\\)
PV = $ADDR "\\\304\\\200\\\0\\\310\\\200"\\\0 \[UTF8 "\\\x\{100\}\\\x\{0\}\\\x\{200\}"\]
CUR = 5
LEN = \\d+');
$x,
'SV = PVMG\\($ADDR\\) at $ADDR
REFCNT = 1
- FLAGS = \\(PADBUSY,PADMY,SMG,POK,pPOK\\)
+ FLAGS = \\(PADMY,SMG,POK,pPOK\\)
IV = 0
NV = 0
PV = $ADDR ""\\\0
MG_FLAGS = 0x01
MINMATCH');
+#
+# TAINTEDDIR is not set on: OS2, AMIGAOS, WIN32, MSDOS
+# environment variables may be invisibly case-forced, hence the (?i:PATH)
+# C<scalar(@ARGV)> is turned into an IV on VMS hence the (?:IV)?
+#
do_test(21,
$ENV{PATH}=@ARGV, # scalar(@ARGV) is a handy known tainted value
'SV = PVMG\\($ADDR\\) at $ADDR
MAGIC = $ADDR
MG_VIRTUAL = &PL_vtbl_envelem
MG_TYPE = PERL_MAGIC_envelem\\(e\\)
- MG_FLAGS = 0x01
+(?: MG_FLAGS = 0x01
TAINTEDDIR
- MG_LEN = 4
- MG_PTR = $ADDR "PATH"
+)? MG_LEN = -?\d+
+ MG_PTR = $ADDR (?:"(?i:PATH)"|=> HEf_SVKEY
+ SV = PV(?:IV)?\\($ADDR\\) at $ADDR
+ REFCNT = \d+
+ FLAGS = \\(TEMP,POK,pPOK\\)
+(?: IV = 0
+)? PV = $ADDR "(?i:PATH)"\\\0
+ CUR = \d+
+ LEN = \d+)
MAGIC = $ADDR
MG_VIRTUAL = &PL_vtbl_taint
MG_TYPE = PERL_MAGIC_taint\\(t\\)');
END {
1 while unlink("peek$$");
}
+
+# blessed refs
+do_test(22,
+ bless(\\undef, 'Foobar'),
+'SV = RV\\($ADDR\\) at $ADDR
+ REFCNT = 1
+ FLAGS = \\(ROK\\)
+ RV = $ADDR
+ SV = PVMG\\($ADDR\\) at $ADDR
+ REFCNT = 2
+ FLAGS = \\(OBJECT,ROK\\)
+ IV = -?\d+
+ NV = $FLOAT
+ RV = $ADDR
+ SV = NULL\\(0x0\\) at $ADDR
+ REFCNT = \d+
+ FLAGS = \\(READONLY\\)
+ PV = $ADDR ""
+ CUR = 0
+ LEN = 0
+ STASH = $ADDR\s+"Foobar"');