From 474a6affd32786ec28fbda8cd91d6f0e09c4d834 Mon Sep 17 00:00:00 2001 From: ElektroKill Date: Thu, 11 Jan 2024 19:27:55 +0100 Subject: [PATCH] Don't crash when XAML namespace cannot be resolved (refs #282) --- Extensions/dnSpy.BamlDecompiler/Xaml/XamlProperty.cs | 10 +--------- Extensions/dnSpy.BamlDecompiler/Xaml/XamlType.cs | 8 +++++--- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/Extensions/dnSpy.BamlDecompiler/Xaml/XamlProperty.cs b/Extensions/dnSpy.BamlDecompiler/Xaml/XamlProperty.cs index a94c5eaed2..6ac4494a89 100644 --- a/Extensions/dnSpy.BamlDecompiler/Xaml/XamlProperty.cs +++ b/Extensions/dnSpy.BamlDecompiler/Xaml/XamlProperty.cs @@ -151,15 +151,7 @@ public string ToMarkupExtensionName(XamlContext ctx, XElement parent, bool isFul return XmlConvert.EncodeLocalName(PropertyName); var sb = new StringBuilder(); - if (DeclaringType.Namespace != parent.GetDefaultNamespace()) { - var prefix = parent.GetPrefixOfNamespace(DeclaringType.Namespace); - if (!string.IsNullOrEmpty(prefix)) { - sb.Append(prefix); - sb.Append(':'); - } - } - - DeclaringType.TypeName.AppendEncodedName(sb); + DeclaringType.AppendMarkupExtensionName(sb, parent); sb.Append('.'); sb.Append(XmlConvert.EncodeLocalName(PropertyName)); return sb.ToString(); diff --git a/Extensions/dnSpy.BamlDecompiler/Xaml/XamlType.cs b/Extensions/dnSpy.BamlDecompiler/Xaml/XamlType.cs index 72370c105a..28708dc21e 100644 --- a/Extensions/dnSpy.BamlDecompiler/Xaml/XamlType.cs +++ b/Extensions/dnSpy.BamlDecompiler/Xaml/XamlType.cs @@ -101,9 +101,11 @@ public XName ToXName(XamlContext ctx) { public string ToMarkupExtensionName(XamlContext ctx, XElement elem) { ResolveNamespace(elem, ctx); + return AppendMarkupExtensionName(new StringBuilder(), elem).ToString(); + } - var sb = new StringBuilder(); - if (Namespace != elem.GetDefaultNamespace()) { + public StringBuilder AppendMarkupExtensionName(StringBuilder sb, XElement elem) { + if (Namespace is not null && Namespace != elem.GetDefaultNamespace()) { var prefix = elem.GetPrefixOfNamespace(Namespace); if (!string.IsNullOrEmpty(prefix)) { sb.Append(prefix); @@ -111,7 +113,7 @@ public string ToMarkupExtensionName(XamlContext ctx, XElement elem) { } } - return TypeName.AppendEncodedName(sb).ToString(); + return TypeName.AppendEncodedName(sb); } public override string ToString() => TypeName;