It sounds like a bug if it’s specified to have different behavior.  The Windows 
Forms code isn’t as actively maintained as other parts of mono.  It sounds like 
you have a failing test and know what to fix…all the makings for a PR on 
Github.  I’m not familiar with that particular WinForms code, but if you need 
assistance, I would be happy to help you craft a pull request to fix it.

On Feb 24, 2015, at 1:02 PM, Chad Dettmering <chad.dettmer...@gmail.com> wrote:

> Hello Mono Devs! This is my first time posting to this mailing list so 
> forgive me if I step on any toes.
> 
> I was running an application called Chummer5 link: 
> https://code.google.com/p/chummer5/ with Mono. The application kept crashing 
> on the method Windows.Systems.Forms.ToolStripManager.RevertMerge. 
> 
> Being the curious software dev that I am, I decided to download the Mono and 
> Chummer5 source code to figure out the problem. I might add the application 
> runs fine on a Windows machine using the official .NET runtime.
> 
> After poking around I came to this line of code in Chummer5
> 
> // Merge the ToolStrips.
> ToolStripManager.RevertMerge("toolStrip");
> ToolStripManager.Merge(toolStrip, "toolStrip"); 
> 
> which leads to an ArgumentNullException in Mono. The argument is not null of 
> course but this method calls the base RevertMerge method which takes 
> (ToolStrip, ToolStrip) as it's parameters, and uses the FindToolStrip method 
> to find the ToolStrip based on the name. Now this implementation will always 
> cause the RevertMerge parameter to be null if a Merge has not been called 
> with the same name.
> 
> Digging into the Mono source I came to this line of code inside the 
> RevertMerge method implementation
> 
> if (sourceToolStrip == null)
>     throw new ArgumentNullException ("sourceToolStrip");
> 
> So Mono is throwing an Exception explicitly in this case and will throw an 
> Exception everytime RevertMerge is called before Merge using the same
> 
> I thought this was odd so I went to the msdn documentation here: 
> https://msdn.microsoft.com/en-us/library/b4e35dwy%28v=vs.110%29.aspx
> 
> According to the documentation this method shouldn't throw any Exceptions, 
> instead it should return false if the RevertMerge failed. Also looking at the 
> example on the page it shows this as a valid way to use the method
> 
> // Undo previous merge, if any. 
> ToolStripManager.RevertMerge(cmsBase, cmsItemsToMerge);
> 
> which implies that sending null is valid.
> 
> Given all of this information is this a "bug" in Mono? Someone wrote that 
> Exception explicitly so the code is working as intended but it breaks 
> compatibility on the application I'm running.
> 
> Any more info on this topic would be great! Nice to meet everyone! :)
> 
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list@lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list

_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list

Reply via email to