DIE(aTHX_ "Undefined format \"%"SVf"\" called", SVfARG(tmpsv));
}
IoFLAGS(io) &= ~IOf_DIDTOP;
- return doform(cv,gv,PL_op->op_next);
+ RETURNOP(doform(cv,gv,PL_op->op_next));
}
PP(pp_leavewrite)
register PERL_CONTEXT *cx;
OP *retop;
+ /* I'm not sure why, but executing the format leaves an extra value on the
+ * stack. There's probably a better place to be handling this (probably
+ * by avoiding pushing it in the first place!) but I don't quite know
+ * where to look. -doy */
+ POPs;
+
if (!io || !(ofp = IoOFP(io)))
goto forget_top;
gv_efullname4(sv, fgv, NULL, FALSE);
DIE(aTHX_ "Undefined top format \"%"SVf"\" called", SVfARG(sv));
}
- return doform(cv, gv, PL_op);
+ RETURNOP(doform(cv, gv, PL_op));
}
forget_top:
}
/* bad_ofp: */
PL_formtarget = PL_bodytarget;
- PUTBACK;
PERL_UNUSED_VAR(newsp);
PERL_UNUSED_VAR(gimme);
- return retop;
+ RETURNOP(retop);
}
PP(pp_prtf)
my $bas_tests = 20;
# number of tests in section 3
-my $bug_tests = 8 + 3 * 3 * 5 * 2 * 3 + 2 + 66 + 4 + 2 + 3;
+my $bug_tests = 8 + 3 * 3 * 5 * 2 * 3 + 2 + 66 + 4 + 2 + 3 + 16;
# number of tests in section 4
my $hmb_tests = 35;
print "$zamm->[0]\n";
EOP
+# [perl #73690]
+
+select +(select(RT73690), do {
+ open(RT73690, '>Op_write.tmp') || die "Can't create Op_write.tmp";
+ format RT73690 =
+@<< @<<
+11, 22
+.
+
+ my @ret;
+ @ret = write;
+ is(scalar(@ret), 1);
+ ok($ret[0]);
+ @ret = scalar(write);
+ is(scalar(@ret), 1);
+ ok($ret[0]);
+ @ret = write(RT73690);
+ is(scalar(@ret), 1);
+ ok($ret[0]);
+ @ret = scalar(write(RT73690));
+ is(scalar(@ret), 1);
+ ok($ret[0]);
+
+ close RT73690 or die "Could not close: $!";
+})[0];
+
+select +(select(RT73690_2), do {
+ open(RT73690_2, '>Op_write.tmp') || die "Can't create Op_write.tmp";
+ format RT73690_2 =
+@<< @<<
+return
+.
+
+ my @ret;
+ @ret = write;
+ is(scalar(@ret), 1);
+ ok(!$ret[0]);
+ @ret = scalar(write);
+ is(scalar(@ret), 1);
+ ok(!$ret[0]);
+ @ret = write(RT73690_2);
+ is(scalar(@ret), 1);
+ ok(!$ret[0]);
+ @ret = scalar(write(RT73690_2));
+ is(scalar(@ret), 1);
+ ok(!$ret[0]);
+
+ close RT73690_2 or die "Could not close: $!";
+})[0];
+
#############################
## Section 4
## Add new tests *above* here