From: Robert Jordan Date: Fri, 12 Jun 2009 20:41:58 +0000 (-0000) Subject: 2009-06-12 Robert Jordan X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=c7ab76d04d86e70fadc97186cb9cd67e72122bf1;p=mono.git 2009-06-12 Robert Jordan * cominterop.c (cominterop_get_ccw): Increment mspec's SizeParamIndex because "this" of the managed signature has become an ordinary parameter in the unmanaged signature. svn path=/trunk/mono/; revision=136029 --- diff --git a/mono/metadata/ChangeLog b/mono/metadata/ChangeLog index 8093e3efca0..2713ebef947 100644 --- a/mono/metadata/ChangeLog +++ b/mono/metadata/ChangeLog @@ -1,3 +1,9 @@ +2009-06-12 Robert Jordan + + * cominterop.c (cominterop_get_ccw): Increment mspec's SizeParamIndex + because "this" of the managed signature has become an + ordinary parameter in the unmanaged signature. + 2009-06-12 Zoltan Varga * class-internals.h (struct _MonoGenericContainer): Add an 'image' diff --git a/mono/metadata/cominterop.c b/mono/metadata/cominterop.c index b240c665366..ad29cfb337e 100644 --- a/mono/metadata/cominterop.c +++ b/mono/metadata/cominterop.c @@ -1917,6 +1917,12 @@ cominterop_get_ccw (MonoObject* object, MonoClass* itf) mspecs[mspec_index] = g_new0 (MonoMarshalSpec, 1); mspecs[mspec_index]->native = MONO_NATIVE_VARIANTBOOL; } + } else { + /* increase SizeParamIndex since we've added a param */ + if (sig_adjusted->params[param_index]->type == MONO_TYPE_ARRAY || + sig_adjusted->params[param_index]->type == MONO_TYPE_SZARRAY) + if (mspecs[mspec_index]->data.array_data.param_num != -1) + mspecs[mspec_index]->data.array_data.param_num++; } }