Re: format bug report [Patch]
H.Merijn Brand [Wed, 5 Jul 2000 13:12:52 +0000 (15:12 +0200)]
Date: Wed, 05 Jul 2000 13:12:52 +0200
Message-Id: <20000705130745.67BF.H.M.BRAND@hccnet.nl>

Subject: Re: format bug report  [Patch]
From: "H.Merijn Brand" <h.m.brand@hccnet.nl>
Date: Wed, 05 Jul 2000 14:10:01 +0200
Message-Id: <20000705140837.73C2.H.M.BRAND@hccnet.nl>

p4raw-id: //depot/cfgperl@6340

t/op/write.t
toke.c

index 87d5042..593c69a 100755 (executable)
@@ -1,6 +1,6 @@
 #!./perl
 
-print "1..8\n";
+print "1..9\n";
 
 my $CAT = ($^O eq 'MSWin32') ? 'type' : 'cat';
 
@@ -201,3 +201,19 @@ $this,$that
     $that = 8;
     write LEX;
 }
+# LEX_INTERPNORMAL test
+my %e = ( a => 1 );
+format OUT4 =
+@<<<<<<
+"$e{a}"
+.
+open   OUT4, ">Op_write.tmp" or die "Can't create Op_write.tmp";
+write (OUT4);
+close  OUT4;
+if (`$CAT Op_write.tmp` eq "1\n") {
+    print "ok 9\n";
+    unlink "Op_write.tmp";
+    }
+else {
+    print "not ok 9\n";
+    }
diff --git a/toke.c b/toke.c
index 8be8476..c31893e 100644 (file)
--- a/toke.c
+++ b/toke.c
@@ -3172,7 +3172,7 @@ Perl_yylex(pTHX)
            yyerror("Unmatched right curly bracket");
        else
            PL_expect = (expectation)PL_lex_brackstack[--PL_lex_brackets];
-       if (PL_lex_brackets < PL_lex_formbrack)
+       if (PL_lex_brackets < PL_lex_formbrack && PL_lex_state != LEX_INTERPNORMAL)
            PL_lex_formbrack = 0;
        if (PL_lex_state == LEX_INTERPNORMAL) {
            if (PL_lex_brackets == 0) {
@@ -7176,7 +7176,7 @@ S_scan_formline(pTHX_ register char *s)
     bool needargs = FALSE;
 
     while (!needargs) {
-       if (*s == '.' || *s == '}') {
+       if (*s == '.' || *s == /*{*/'}') {
            /*SUPPRESS 530*/
 #ifdef PERL_STRICT_CR
            for (t = s+1;SPACE_OR_TAB(*t); t++) ;