Fixed Mono.Debugger.Soft unit tests and added new `new String('a', 3);` unit test...
authorDavid Karlaš <david.karlas@xamarin.com>
Fri, 16 Jun 2017 07:46:36 +0000 (09:46 +0200)
committerDavid Karlaš <david.karlas@xamarin.com>
Fri, 16 Jun 2017 07:46:57 +0000 (09:46 +0200)
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/VirtualMachine.cs
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/VirtualMachineManager.cs
mcs/class/Mono.Debugger.Soft/Test/dtest.cs

index 40b7d6315561634b8dd9d005606f5c1d6afbe2a4..1eaaac8ec9d4c165c76c5fe8d54094197434f36d 100644 (file)
@@ -730,6 +730,7 @@ namespace Mono.Debugger.Soft
                                        l.Add (new ThreadStartEvent (vm, req_id, id));
                                        break;
                                case EventType.ThreadDeath:
+                                       vm.GetThread (id).InvalidateFrames ();
                                        vm.InvalidateThreadCache ();
                                        l.Add (new ThreadDeathEvent (vm, req_id, id));
                                        break;
index 141913a228cefb598c7423a0c7ed81946b071eef..27a4e0e55f03951e8e1d15e1c8fa63c8b00ef374 100644 (file)
@@ -96,8 +96,11 @@ namespace Mono.Debugger.Soft
                                info.FileName = "valgrind";
                        info.UseShellExecute = false;
 
-                       info.StandardErrorEncoding = Encoding.UTF8;
-                       info.StandardOutputEncoding = Encoding.UTF8;
+                       if (info.RedirectStandardError)
+                               info.StandardErrorEncoding = Encoding.UTF8;
+
+                       if (info.RedirectStandardOutput)
+                               info.StandardOutputEncoding = Encoding.UTF8;
 
                        ITargetProcess p;
                        if (options != null && options.CustomProcessLauncher != null)
index 5f80228fe2fb2c43dc7d2a131888664db4574174..8d22ac808b2282d92cd8c3787030eb0ba147f14b 100644 (file)
@@ -2642,6 +2642,17 @@ public class DebuggerTests
 
                return;
 
+               // string constructor
+               var stringType = vm.RootDomain.Corlib.GetType ("System.String");
+               var stringConstructor = stringType.GetMethods ().Single (c=>
+                       c.Name == ".ctor" &&
+                       c.GetParameters ().Length == 2 &&
+                       c.GetParameters ()[0].ParameterType.Name == "Char" &&
+                       c.GetParameters ()[1].ParameterType.Name == "Int32");
+               var str = stringType.NewInstance (e.Thread, stringConstructor,  new Value [] { vm.CreateValue ('a'), vm.CreateValue (3)});
+
+               AssertValue("aaa", str);
+
                // pass primitive
                m = t.GetMethod ("invoke_pass_primitive");
                Value[] args = new Value [] {