From: Gisle Aas <gisle@aas.no>
Date: Thu, 6 Aug 1998 23:28:57 +0000 (+0200)
Subject: fix intolerance of SWASHes for blank lines
X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=1fef36c76e43abddac50405663ebca5d4c4ce4e0;p=p5sagit%2Fp5-mst-13.2.git

fix intolerance of SWASHes for blank lines
	Message-ID: <m3emutkdeu.fsf@furu.g.aas.no>
	Subject: Re: Re[2]: another joyride begins

p4raw-id: //depot/perl@1767
---

diff --git a/lib/utf8_heavy.pl b/lib/utf8_heavy.pl
index e00db32..71cbb17 100644
--- a/lib/utf8_heavy.pl
+++ b/lib/utf8_heavy.pl
@@ -69,7 +69,7 @@ sub SWASHNEW {
     my @extras;
     for my $x ($extras) {
 	pos $x = 0;
-	while ($x =~ /^([^0-9a-fA-F])(.*)/mg) {
+	while ($x =~ /^([^0-9a-fA-F\n])(.*)/mg) {
 	    my $char = $1;
 	    my $name = $2;
 	    # print STDERR "$1 => $2\n" if $DEBUG;
@@ -99,10 +99,10 @@ sub SWASHNEW {
 sub SWASHGET {
     my ($self, $start, $len) = @_;
     local $^D = 0 if $^D;
-    print STDERR "SWASHGET @_\n" if $DEBUG;
     my $type = $self->{TYPE};
     my $bits = $self->{BITS};
     my $none = $self->{NONE};
+    print STDERR "SWASHGET @_ [$type/$bits/$none]\n" if $DEBUG;
     my $end = $start + $len;
     my $swatch = "";
     my $key;
@@ -166,45 +166,43 @@ sub SWASHGET {
     }
     for my $x ($self->{EXTRAS}) {
 	pos $x = 0;
-	while ($x =~ /^([^0-9a-fA-F])(.*)/mg) {
+	while ($x =~ /^([-+!])(.*)/mg) {
 	    my $char = $1;
 	    my $name = $2;
 	    print STDERR "INDIRECT $1 $2\n" if $DEBUG;
-	    if ($char =~ /^[-+!]$/) {
-		my $otherbits = $self->{$name}->{BITS};
-		croak("SWASHGET size mismatch") if $bits < $otherbits;
-		my $other = $self->{$name}->SWASHGET($start, $len);
-		if ($char eq '+') {
-		    if ($bits == 1 and $otherbits == 1) {
-			$swatch |= $other;
-		    }
-		    else {
-			for ($key = 0; $key < $len; $key++) {
-			    vec($swatch, $key, $bits) = vec($other, $key, $otherbits);
-			}
-		    }
+	    my $otherbits = $self->{$name}->{BITS};
+	    croak("SWASHGET size mismatch") if $bits < $otherbits;
+	    my $other = $self->{$name}->SWASHGET($start, $len);
+	    if ($char eq '+') {
+		if ($bits == 1 and $otherbits == 1) {
+		    $swatch |= $other;
 		}
-		elsif ($char eq '!') {
-		    if ($bits == 1 and $otherbits == 1) {
-			$swatch |= ~$other;
+		else {
+		    for ($key = 0; $key < $len; $key++) {
+			vec($swatch, $key, $bits) = vec($other, $key, $otherbits);
 		    }
-		    else {
-			for ($key = 0; $key < $len; $key++) {
-			    if (!vec($other, $key, $otherbits)) {
-				vec($swatch, $key, $bits) = 1;
-			    }
+		}
+	    }
+	    elsif ($char eq '!') {
+		if ($bits == 1 and $otherbits == 1) {
+		    $swatch |= ~$other;
+		}
+		else {
+		    for ($key = 0; $key < $len; $key++) {
+			if (!vec($other, $key, $otherbits)) {
+			    vec($swatch, $key, $bits) = 1;
 			}
 		    }
 		}
-		elsif ($char eq '-') {
-		    if ($bits == 1 and $otherbits == 1) {
-			$swatch &= ~$other;
-		    }
-		    else {
-			for ($key = 0; $key < $len; $key++) {
-			    if (vec($other, $key, $otherbits)) {
-				vec($swatch, $key, $bits) = 0;
-			    }
+	    }
+	    elsif ($char eq '-') {
+		if ($bits == 1 and $otherbits == 1) {
+		    $swatch &= ~$other;
+		}
+		else {
+		    for ($key = 0; $key < $len; $key++) {
+			if (vec($other, $key, $otherbits)) {
+			    vec($swatch, $key, $bits) = 0;
 			}
 		    }
 		}