From 0e8e1d1454451b39acc83b0099eb0d057fde3f4f Mon Sep 17 00:00:00 2001 From: Ivan Bondarev Date: Sun, 20 Aug 2023 11:59:24 +0200 Subject: [PATCH] #2916 --- NETGenerator/NETGenerator.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/NETGenerator/NETGenerator.cs b/NETGenerator/NETGenerator.cs index 8bbec4dbf..7b988b0bc 100644 --- a/NETGenerator/NETGenerator.cs +++ b/NETGenerator/NETGenerator.cs @@ -11620,7 +11620,15 @@ namespace PascalABCCompiler.NETGenerator //il.Emit(OpCodes.Leave, leave_label); il.BeginFinallyBlock(); //il.MarkLabel(br_lbl); - if (lb.LocalType.GetInterface("System.IDisposable") != null) + bool is_disposable = false; + if (helper.IsConstructedGenericType(return_type)) + { + if (enumer_mi.ReturnType.GetGenericTypeDefinition().GetMethod("Dispose") != null) + is_disposable = true; + } + else if (lb.LocalType.GetInterface("System.IDisposable") != null) + is_disposable = true; + if (is_disposable) { if (lb.LocalType.IsValueType) il.Emit(OpCodes.Ldloca, lb);