All pastes #934035 Raw Edit

Someone

public text v1 · immutable
·published 2008-03-08 16:26 UTC
rendered paste body
Index: Mono.Cecil.Cil/CodeReader.cs
===================================================================
--- Mono.Cecil.Cil/CodeReader.cs	(revision 97762)
+++ Mono.Cecil.Cil/CodeReader.cs	(working copy)
@@ -40,6 +40,7 @@
 
 		ReflectionReader m_reflectReader;
 		MetadataRoot m_root;
+		IDictionary instrs;
 
 		public CodeReader (ReflectionReader reflectReader)
 		{
@@ -54,13 +55,15 @@
 			BinaryReader br = m_reflectReader.Module.ImageReader.MetadataReader.GetDataReader (meth.RVA);
 
 			// lets read the method
-			IDictionary instrs;
+			if (instrs == null)
+				instrs = new Hashtable ();
+
 			int flags = br.ReadByte ();
 			switch (flags & 0x3) {
 			case (int) MethodHeader.TinyFormat :
 				methBody.CodeSize = flags >> 2;
 				methBody.MaxStack = 8;
-				ReadCilBody (methBody, br, out instrs);
+				ReadCilBody (methBody, br, ref instrs);
 				break;
 			case (int) MethodHeader.FatFormat :
 				br.BaseStream.Position--;
@@ -71,7 +74,7 @@
 				methBody.LocalVarToken = br.ReadInt32 ();
 				body.InitLocals = (fatflags & (int) MethodHeader.InitLocals) != 0;
 				VisitVariableDefinitionCollection (methBody.Variables);
-				ReadCilBody (methBody, br, out instrs);
+				ReadCilBody (methBody, br, ref instrs);
 				if ((fatflags & (int) MethodHeader.MoreSects) != 0)
 					ReadSection (methBody, br, instrs);
 				break;
@@ -102,12 +105,12 @@
 			return body.Variables [index];
 		}
 
-		void ReadCilBody (MethodBody body, BinaryReader br, out IDictionary instructions)
+		void ReadCilBody (MethodBody body, BinaryReader br, ref IDictionary instructions)
 		{
 			long start = br.BaseStream.Position;
 			Instruction last = null;
 			InstructionCollection code = body.Instructions;
-			instructions = new Hashtable ();
+			instructions.Clear ();
 			GenericContext context = new GenericContext (body.Method);
 
 			while (br.BaseStream.Position < start + body.CodeSize) {