That looks ok. Zoltan
On Fri, Jun 12, 2009 at 8:08 PM, Robert Jordan <robe...@gmx.net> wrote: > Tom Hindle wrote: > >> When checking param index type (which is 1 as SizeParamIndex == 1) >> (about line 6778) the Array itself is being checked (byte[] pv) as >> m->sig has had and extra parameter inserted at the beginning of its >> parameter list. (which I assume is for communicating the HRESULT return >> value back to the C++ as this is a COM method call.) >> > > It's the converted "this" arg of the managed sig at the front > of the unmanaged sig. > > Could someone tell me if this is the correct place to adjust the >> param_num or should spec->data.array_data.param_num be expected to contain >> the adjusted >> value? >> > > There are apparently 2 places in cominterop.c where > spec->data.array_data.param_num has to be increased by one. > > The attached patch is fixing one place, but there seems > to be another one in cominterop_get_native_wrapper_adjusted. > > Please try it out as I don't have a test case. > > Robert > > > Index: cominterop.c > =================================================================== > --- cominterop.c (revision 135665) > +++ cominterop.c (working copy) > @@ -1917,6 +1917,12 @@ > mspecs[mspec_index] = g_new0 > (MonoMarshalSpec, 1); > mspecs[mspec_index]->native > = MONO_NATIVE_VARIANTBOOL; > } > + } else { > + /* increase SizeParamIndex because > 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++; > } > } > > > _______________________________________________ > 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