chiark / gitweb /
layout/data2safety: ditch rather than mistake on movfeatposmap of an unwired segment
authorIan Jackson <ian@liberator.relativity.greenend.org.uk>
Fri, 24 Dec 2010 00:36:28 +0000 (00:36 +0000)
committerIan Jackson <ian@liberator.relativity.greenend.org.uk>
Fri, 24 Dec 2010 00:36:28 +0000 (00:36 +0000)
layout/data2safety

index 2af6690e8d2b75077a6ac9d34292336aad71b9a4..d32e749f6f60048605b89b9ddba7adebc442e274 100755 (executable)
@@ -259,15 +259,20 @@ sub line_movfeatposmap () {
        m,^\s+(\w+)\s+([A-Za-z]+)(\d+)(?:\-(\d+))?((?:\s+(?:[A-Za-z]+\d+)*)+)$,;
     defined $segr or return syntaxerror();
 
-    my $seg= $segs{$segr};
-    return mistake("unknown segment $segr in movfeatposmap") unless $seg;
-
     $abstr_lastpos= $abstr_firstpos unless defined $abstr_lastpos;
     my $nabstr_posns= $abstr_lastpos - $abstr_firstpos + 1;
     
     $conc_posns =~ s/^\s+//;
     my (@conc_posns) = split /\s+/, $conc_posns;
 
+    my $seg= $segs{$segr};
+    if (!$seg) {
+       ditch("movfeatposmap for unwired segment".
+             " $segr/$abstr_namebase$abstr_firstpos".
+             ($nabstr_posns>1 ? "-$abstr_lastpos" : ""));
+       return;
+    }
+
     @conc_posns == $nabstr_posns
        or return mistake("number of concrete poscombs ".@conc_posns.
                          " differs from number of abstract poscombs".