diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs
index 5606287120..b6debcf72c 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs
@@ -190,7 +190,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
private string ProcessYield(string FileName)
{
// TODO: Create a new assembly and copy old but insert Yield Code
- return FileName;
+ return TempDotNetMicroThreadingCodeInjector.TestFix(FileName);
}
private AppDomain GetFreeAppDomain()
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/TempDotNetMicroThreadingCodeInjector.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/TempDotNetMicroThreadingCodeInjector.cs
new file mode 100644
index 0000000000..dd3ce09dd2
--- /dev/null
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/TempDotNetMicroThreadingCodeInjector.cs
@@ -0,0 +1,41 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using Rail.Transformation;
+using Rail.Reflect;
+using Rail.Exceptions;
+using Rail.MSIL;
+
+namespace OpenSim.Region.ScriptEngine.DotNetEngine
+{
+ class TempDotNetMicroThreadingCodeInjector
+ {
+ public static string TestFix(string FileName)
+ {
+ string ret = System.IO.Path.GetFileNameWithoutExtension(FileName + "_fixed.dll");
+
+ Console.WriteLine("Loading: \"" + FileName + "\"");
+ RAssemblyDef rAssembly = RAssemblyDef.LoadAssembly(FileName);
+
+
+ //Get the type of the method to copy from assembly Teste2.exe to assembly Teste.exe
+ RTypeDef type = (RTypeDef)rAssembly.RModuleDef.GetType("SecondLife.Script");
+
+ //Get the methods in the type
+ RMethod[] m = type.GetMethods();
+
+ //Create a MethodPrologueAdder visitor object with the method to add
+ //and with the flag that enables local variable creation set to true
+ MethodPrologueAdder mpa = new MethodPrologueAdder((RMethodDef)m[0], true);
+
+ //Apply the changes to the assembly
+ rAssembly.Accept(mpa);
+
+ //Save the new assembly
+ rAssembly.SaveAssembly(ret);
+
+ return ret;
+
+ }
+ }
+}
diff --git a/bin/RAIL.dll b/bin/RAIL.dll
new file mode 100644
index 0000000000..f2632d71b6
Binary files /dev/null and b/bin/RAIL.dll differ
diff --git a/prebuild.xml b/prebuild.xml
index d1bb30f3c6..1e845412e6 100644
--- a/prebuild.xml
+++ b/prebuild.xml
@@ -958,6 +958,7 @@
+