From c0ac993ec5ea562d9df766535ba5b0d03e1e091e Mon Sep 17 00:00:00 2001 From: Radek Doulik Date: Wed, 3 Jun 2015 17:21:28 +0200 Subject: [PATCH] [linker] process only .xml files, catch xml exceptions [merged from monodroid by rodo] commit f51f044e30b822f191777a395563ef9d46f8b69d Author: Radek Doulik Date: Wed Mar 4 18:28:59 2015 +0100 - fixes #27620 - in this case we were trying to process Application.java as linker an assembly XML linker description, which led to uncaught XmlException --- mcs/tools/linker/Mono.Linker.Steps/BlacklistStep.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/mcs/tools/linker/Mono.Linker.Steps/BlacklistStep.cs b/mcs/tools/linker/Mono.Linker.Steps/BlacklistStep.cs index 670fa04c661..c65d3037c8e 100644 --- a/mcs/tools/linker/Mono.Linker.Steps/BlacklistStep.cs +++ b/mcs/tools/linker/Mono.Linker.Steps/BlacklistStep.cs @@ -47,10 +47,18 @@ namespace Mono.Linker.Steps { protected override void Process () { foreach (string name in Assembly.GetExecutingAssembly ().GetManifestResourceNames ()) { - if (!IsReferenced (GetAssemblyName (name))) + if (Path.GetExtension (name) != ".xml" || !IsReferenced (GetAssemblyName (name))) continue; - Context.Pipeline.AddStepAfter (typeof (TypeMapStep), GetResolveStep (name)); + try { + if (Context.LogInternalExceptions) + Console.WriteLine ("Processing resource linker descriptor: {0}", name); + Context.Pipeline.AddStepAfter (typeof (TypeMapStep), GetResolveStep (name)); + } catch (XmlException ex) { + /* This could happen if some broken XML file is included. */ + if (Context.LogInternalExceptions) + Console.WriteLine ("Error processing {0}: {1}", name, ex); + } } foreach (var rsc in Context.GetAssemblies () -- 2.25.1