On Wed, 2005-05-04 at 09:25 +1000, Michi Henning wrote:
> Note that the destructor simply checks whether destroy() was called before the
> instance is collected and that this is required only for a debug build. In
> order to save the cost of acquiring the lock (and to avoid the cost of 
> calling the
> destructor altogether), the entire destructor is made conditional.
> 

In general, adding or removing an override is not a breaking change.

Finalize works by chaining to the parent using base.Finalize. calling a
method on base will always say call <my direct parent>.Method. In the
JIT we would in the debug build see: "my direct parent" has the finalize
method so call that, but in the non-debug build see "my direct parent"
doesn't have a finalizer, so lets try one in the parent of that class.

Sadly, due to some limitations in System.Reflection, MCS does not
implement this correctly.

http://bugzilla.ximian.com/show_bug.cgi?id=26204

As you can tell, thats a pretty old bug ;-(

-- Ben

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

Reply via email to