diff options
Diffstat (limited to 'Mono.Cecil/AssemblyWriter.cs')
-rw-r--r-- | Mono.Cecil/AssemblyWriter.cs | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/Mono.Cecil/AssemblyWriter.cs b/Mono.Cecil/AssemblyWriter.cs index 5496cac..52c601c 100644 --- a/Mono.Cecil/AssemblyWriter.cs +++ b/Mono.Cecil/AssemblyWriter.cs @@ -2392,13 +2392,19 @@ namespace Mono.Cecil { var method_info = ((MethodDefinition) provider).DebugInformation; var signature = CreateSignatureWriter (); - signature.WriteUInt32 ((uint) state_machine_scope.Start.Offset); - var end_offset = state_machine_scope.End.IsEndOfMethod - ? method_info.code_size - : state_machine_scope.End.Offset; + var scopes = state_machine_scope.Scopes; - signature.WriteUInt32 ((uint) (end_offset - state_machine_scope.Start.Offset)); + for (int i = 0; i < scopes.Count; i++) { + var scope = scopes [i]; + signature.WriteUInt32 ((uint) scope.Start.Offset); + + var end_offset = scope.End.IsEndOfMethod + ? method_info.code_size + : scope.End.Offset; + + signature.WriteUInt32 ((uint) (end_offset - scope.Start.Offset)); + } AddCustomDebugInformation (provider, state_machine_scope, signature); } @@ -2411,7 +2417,7 @@ namespace Mono.Cecil { for (int i = 0; i < async_method.yields.Count; i++) { signature.WriteUInt32 ((uint) async_method.yields [i].Offset); signature.WriteUInt32 ((uint) async_method.resumes [i].Offset); - signature.WriteCompressedUInt32 (async_method.move_next.MetadataToken.RID); + signature.WriteCompressedUInt32 (async_method.resume_methods [i].MetadataToken.RID); } AddCustomDebugInformation (provider, async_method, signature); |