chiark / gitweb /
layout/data2safety: cope properly with segposcombs which do not appear in ours.redact...
authorIan Jackson <ian@liberator.relativity.greenend.org.uk>
Wed, 1 Dec 2010 22:44:03 +0000 (22:44 +0000)
committerIan Jackson <ian@liberator.relativity.greenend.org.uk>
Wed, 1 Dec 2010 22:44:03 +0000 (22:44 +0000)
layout/data2safety

index c126713059bfab86fc124445daeca8325f7fcde4..ff77f2b84265a704f08579a7b7729a34ac3d2bc3 100755 (executable)
@@ -625,27 +625,32 @@ sub writeout () {
                              ($comb / $featv->{Weight}) % $featv->{Posns});
            }
            o("$delim\n");
+           my $dist= $segr->{Dist}[$comb];
            o(sprintf " { %-7s%4d, { ",
              '"'.$pi.'",',
-             $segr->{Dist}[$comb]);
+             defined($dist) ? $dist : 1);
            for ($end=0; $end<2; $end++) {
                o(", ") if $end;
                o("{");
                $otherend= $segr->{Ends}[$comb][!$end];
-               defined $otherend or
-                   die "segment $seg combination $comb end $end undefined\n";
-               ($node,$side) = @$otherend;
-               $nodeotherside= $nodes{$node}[1-$side];
-               if (defined $nodeotherside) {
-                   $otherseg= $nodeotherside->{Seg};
-                   $otherbackrelus= $nodeotherside->{End} ^ $end;
-                   o(sprintf "/*%4s.%d*/ %d,%4s",
-                     $node,$side,
-                     $otherbackrelus,
-                     so_segnum($otherseg));
+               if (!defined $otherend) {
+                   die "segment $seg combination $comb end $end undefined\n"
+                       if defined $dist;
+                   o(" 0,NOTA(Segment)");
                } else {
-                   o(sprintf "/*%5s.%d*/ 0,NOTA(Segment)",
-                     $node,$side);
+                   ($node,$side) = @$otherend;
+                   $nodeotherside= $nodes{$node}[1-$side];
+                   if (defined $nodeotherside) {
+                       $otherseg= $nodeotherside->{Seg};
+                       $otherbackrelus= $nodeotherside->{End} ^ $end;
+                       o(sprintf "/*%4s.%d*/ %d,%4s",
+                         $node,$side,
+                         $otherbackrelus,
+                         so_segnum($otherseg));
+                   } else {
+                       o(sprintf "/*%5s.%d*/ 0,NOTA(Segment)",
+                         $node,$side);
+                   }
                }
                o(" }");
            }