In perl.git, the branch blead has been updated
<http://perl5.git.perl.org/perl.git/commitdiff/e41cc779424eaf419bea11fb7535e356b1113698?hp=174830c759611b7e2c36d109e8a5529e95868eb0>
- Log -----------------------------------------------------------------
commit e41cc779424eaf419bea11fb7535e356b1113698
Author: Vincent Pit <perl@profvince.com>
Date: Mon Jul 27 14:47:26 2009 +0200
Regression test for [perl #67912]
M t/op/sysio.t
commit 6100a0a495d0f5504fc134f242a1ebed97a87087
Author: chromatic <chromatic@wgz.org>
Date: Mon Jul 27 14:44:15 2009 +0200
syswrite prints garbage if called with empty scalar and non-zero offset
M pp_sys.c
-----------------------------------------------------------------------
Summary of changes:
pp_sys.c | 2 +-
t/op/sysio.t | 15 ++++++++++++---
2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/pp_sys.c b/pp_sys.c
index 23f79ba..ec12cd4 100644
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -1919,7 +1919,7 @@ PP(pp_send)
DIE(aTHX_ "Offset outside string");
}
offset += blen_chars;
- } else if (offset >= (IV)blen_chars && blen_chars > 0) {
+ } else if (offset >= (IV)blen_chars) {
Safefree(tmpbuf);
DIE(aTHX_ "Offset outside string");
}
diff --git a/t/op/sysio.t b/t/op/sysio.t
index dd63a15..b4c2954 100644
--- a/t/op/sysio.t
+++ b/t/op/sysio.t
@@ -1,6 +1,6 @@
#!./perl
-print "1..42\n";
+print "1..44\n";
chdir('op') || chdir('t/op') || die "sysio.t: cannot look for myself: $!";
@INC = '../../lib';
@@ -179,8 +179,6 @@ if ($reopen) { # must close file to update EOF marker for stat
print 'not ' unless (-s $outfile == 10);
print "ok 31\n";
-close(O);
-
open(I, $outfile) || die "sysio.t: cannot read $outfile: $!";
$b = 'xyz';
@@ -240,6 +238,17 @@ unlink $outfile;
chdir('..');
+# [perl #67912] syswrite prints garbage if called with empty scalar and non-zero offset
+eval { my $buf = ''; syswrite(O, $buf, 1, 0) };
+print 'not ' unless ($@ =~ /^Offset outside string /);
+print "ok 43\n";
+
+eval { my $buf = 'x'; syswrite(O, $buf, 1, 1) };
+print 'not ' unless ($@ =~ /^Offset outside string /);
+print "ok 44\n";
+
+close(O);
+
1;
# eof
--
Perl5 Master Repository