format "..." bug
Unknown Ricoh Contributor II [Tue, 24 Nov 1998 10:37:45 +0000 (19:37 +0900)]
Message-Id: <199811240137.KAA05867@luna.src.ricoh.co.jp>

p4raw-id: //depot/perl@2323

pp_ctl.c
t/op/write.t

index e081fa5..e488749 100644 (file)
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -617,7 +617,13 @@ PP(pp_formline)
            break;
 
        case FF_MORE:
-           if (itemsize) {
+           s = chophere;
+           send = item + len;
+           if (chopspace) {
+               while (*s && isSPACE(*s) && s < send)
+                   s++;
+           }
+           if (s < send) {
                arg = fieldsize - itemsize;
                if (arg) {
                    fieldsize -= arg;
index 705fa79..9918b2f 100755 (executable)
@@ -2,7 +2,7 @@
 
 # $RCSfile: write.t,v $$Revision: 4.1 $$Date: 92/08/07 18:28:38 $
 
-print "1..5\n";
+print "1..6\n";
 
 my $CAT = ($^O eq 'MSWin32') ? 'type' : 'cat';
 
@@ -167,3 +167,26 @@ for (0..10) {
 print $was1 eq $mustbe ? "ok 4\n" : "not ok 4\n";
 print $was2 eq $mustbe ? "ok 5\n" : "not ok 5\n";
 
+$^A = '';
+
+# more test
+
+format OUT3 =
+^<<<<<<...
+$foo
+.
+
+open(OUT3, '>Op_write.tmp') || die "Can't create Op_write.tmp";
+
+$foo = 'fit          ';
+write(OUT3);
+close OUT3;
+
+$right =
+"fit\n";
+
+if (`$CAT Op_write.tmp` eq $right)
+    { print "ok 6\n"; unlink 'Op_write.tmp'; }
+else
+    { print "not ok 6\n"; }
+