summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSlaven Rezic <slaven@rezic.de>2002-11-30 01:07:05 +0100
committerRafael Garcia-Suarez <rgarciasuarez@gmail.com>2002-12-08 22:04:39 +0000
commitf3fd7796410b671022d50f0c339d72cecaf4eef7 (patch)
treeb30f08bab8a7418fd6113037f8da41f818b727ef
parente336476d0b01e142c1024f208616adee0159940b (diff)
downloadperl-f3fd7796410b671022d50f0c339d72cecaf4eef7.tar.gz
Re: [perl #18165] "0" fails as right-hand argument to ..
Message-ID: <8765ugnffq.fsf@vran.herceg.de> p4raw-id: //depot/perl@18264
-rw-r--r--pp_ctl.c4
-rwxr-xr-xt/cmd/for.t7
2 files changed, 8 insertions, 3 deletions
diff --git a/pp_ctl.c b/pp_ctl.c
index 76a2466ca5..2bebcbcf58 100644
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -1690,11 +1690,11 @@ PP(pp_enteriter)
cx->blk_loop.iterary = (AV*)SvREFCNT_inc(POPs);
if (SvTYPE(cx->blk_loop.iterary) != SVt_PVAV) {
dPOPss;
+ /* See comment in pp_flop() */
if (SvNIOKp(sv) || !SvPOKp(sv) ||
SvNIOKp(cx->blk_loop.iterary) || !SvPOKp(cx->blk_loop.iterary) ||
(looks_like_number(sv) && *SvPVX(sv) != '0' &&
- looks_like_number((SV*)cx->blk_loop.iterary) &&
- *SvPVX(cx->blk_loop.iterary) != '0'))
+ looks_like_number((SV*)cx->blk_loop.iterary)))
{
if (SvNV(sv) < IV_MIN ||
SvNV((SV*)cx->blk_loop.iterary) >= IV_MAX)
diff --git a/t/cmd/for.t b/t/cmd/for.t
index 90b5ff0b4f..3275c71d2a 100755
--- a/t/cmd/for.t
+++ b/t/cmd/for.t
@@ -1,6 +1,6 @@
#!./perl
-print "1..11\n";
+print "1..12\n";
for ($i = 0; $i <= 10; $i++) {
$x[$i] = $i;
@@ -66,3 +66,8 @@ foreach $b (bar()) {
}
print $a == 7 ? "ok" : "not ok", " 11\n";
+$loop_count = 0;
+for ("-3" .. "0") {
+ $loop_count++;
+}
+print $loop_count == 4 ? "ok" : "not ok", " 12\n";