Skip to content

Commit 2bda6bd

Browse files
authored
Fix exception processing when there is only finally (#105)
***PUBLISH_RELEASE*** ***UPDATE_DEPENDENTS***
1 parent ffff359 commit 2bda6bd

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

source/MetadataProcessor.Core/nanoAssemblyBuilder.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -715,7 +715,10 @@ i.Operand is TypeSpecification ||
715715
{
716716
if(e.HandlerType != Mono.Cecil.Cil.ExceptionHandlerType.Filter)
717717
{
718-
set.Add(((IMetadataTokenProvider)e.CatchType).MetadataToken);
718+
if(e.CatchType != null)
719+
{
720+
set.Add(((IMetadataTokenProvider)e.CatchType).MetadataToken);
721+
}
719722
}
720723
}
721724
}

source/MetadataProcessor.Core/nanoDumperGenerator.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -268,8 +268,16 @@ private void DumpTypeDefinitions(DumpAllTable dumpTable)
268268

269269
h.Handler = $"{((int)eh.HandlerType).ToString("x2")} " +
270270
$"{eh.TryStart.Offset.ToString("x8")}->{eh.TryEnd.Offset.ToString("x8")} " +
271-
$"{eh.HandlerStart.Offset.ToString("x8")}->{eh.HandlerEnd.Offset.ToString("x8")} " +
272-
$"{eh.CatchType.MetadataToken.ToInt32().ToString("x8")}";
271+
$"{eh.HandlerStart.Offset.ToString("x8")}->{eh.HandlerEnd.Offset.ToString("x8")} ";
272+
273+
if(eh.CatchType != null)
274+
{
275+
h.Handler += $"{eh.CatchType.MetadataToken.ToInt32().ToString("x8")}";
276+
}
277+
else
278+
{
279+
h.Handler += "00000000";
280+
}
273281

274282
methodDef.ExceptionHandlers.Add(h);
275283
}

0 commit comments

Comments
 (0)