summaryrefslogtreecommitdiff
path: root/Master/tlpkg/TeXLive/TeXCatalogue.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Master/tlpkg/TeXLive/TeXCatalogue.pm')
-rw-r--r--Master/tlpkg/TeXLive/TeXCatalogue.pm10
1 files changed, 9 insertions, 1 deletions
diff --git a/Master/tlpkg/TeXLive/TeXCatalogue.pm b/Master/tlpkg/TeXLive/TeXCatalogue.pm
index 34f7a7f512b..575242d19a6 100644
--- a/Master/tlpkg/TeXLive/TeXCatalogue.pm
+++ b/Master/tlpkg/TeXLive/TeXCatalogue.pm
@@ -187,7 +187,15 @@ sub initialize {
# parse all the files
foreach (glob("?/*.xml")) {
open(my $io,"<$_") or die "Cannot read $_: $!";
- my $tce = TeXLive::TeXCatalogue::Entry->new( 'ioref' => $io );
+ our $tce;
+ # the XML parser die's on malformed xml entries, so we catch
+ # that and continue, simply skipping the entry
+ eval { $tce = TeXLive::TeXCatalogue::Entry->new( 'ioref' => $io ); };
+ if ($@) {
+ printf STDERR "TeX Catalogue: cannot read $_, skipping it!\n";
+ close($io);
+ next;
+ }
close($io);
$self->{'entries'}{lc($tce->{'entry'}{'id'})} = $tce;
}