2006-06-15 Zoltan Varga <vargaz@gmail.com>
authorZoltan Varga <vargaz@gmail.com>
Thu, 15 Jun 2006 09:51:44 +0000 (09:51 -0000)
committerZoltan Varga <vargaz@gmail.com>
Thu, 15 Jun 2006 09:51:44 +0000 (09:51 -0000)
* marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
and later freeing it. Fixes #78638.

svn path=/trunk/mono/; revision=61751

mono/metadata/ChangeLog
mono/metadata/marshal.c

index b1ffa179995451faff8ddd08f876be3e92d4dc2a..a778d43a157113b66bec5f36babc19876d22c58a 100644 (file)
@@ -1,3 +1,8 @@
+2006-06-15  Zoltan Varga  <vargaz@gmail.com>
+
+       * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
+       and later freeing it. Fixes #78638.
+
 2006-06-15  Miguel de Icaza  <miguel@novell.com>
 
        * icall.c (mono_class_get_throw): Revert over-zealous error
index 6faad83cd2014749e3628bdfcd863c7a5bb41df6..e502f6e2818dd1962cc5f90bfbc17e07d8f05971 100644 (file)
@@ -390,7 +390,8 @@ mono_ftnptr_to_delegate (MonoClass *klass, gpointer ftn)
 
                mspecs = g_new0 (MonoMarshalSpec*, mono_method_signature (invoke)->param_count + 1);
                mono_method_get_marshal_info (invoke, mspecs);
-               sig = signature_dup (invoke->klass->image, mono_method_signature (invoke));
+               /* Freed below so don't alloc from mempool */
+               sig = mono_metadata_signature_dup (mono_method_signature (invoke));
                sig->hasthis = 0;
 
                wrapper = mono_marshal_get_native_func_wrapper (sig, &piinfo, mspecs, ftn);