Please do not reply to this email- if you want to comment on the bug, go to the URL shown below and enter your comments there.
Changed by [EMAIL PROTECTED] http://bugzilla.ximian.com/show_bug.cgi?id=75847 --- shadow/75847 2005-08-19 08:14:10.000000000 -0400 +++ shadow/75847.tmp.9564 2005-08-19 08:14:10.000000000 -0400 @@ -0,0 +1,39 @@ +Bug#: 75847 +Product: Mono: Runtime +Version: 1.1 +OS: +OS Details: +Status: NEW +Resolution: +Severity: +Priority: Normal +Component: interop +AssignedTo: [EMAIL PROTECTED] +ReportedBy: [EMAIL PROTECTED] +QAContact: [EMAIL PROTECTED] +TargetMilestone: --- +URL: +Cc: +Summary: [PATCH] Invalid IL generated for PtrToStructure internal call + +System.Runtime.InteropServices.PtrToStructure has two overloads (icalls) : + +void PtrToStructure (IntPtr ptr, object structure); +object PtrToStructure (IntPtr ptr, Type structureType); + +mono_marshal_get_ptr_to_struct (called from the ves_icall_*) generates IL +code for PtrToStructure (IntPtr src, object structure) by looking up the +signature for PtrToStructure using 'mono_class_get_method_from_name' which +basically finds the first entry with that name and two params. It needs the +overload with 'void' return type, which by ordering in Marshal.cs is +defined first, so it is able to get the right one. + +But if the ordering is reversed, then it finds the other overload and thus +crashes at runtime with : + +** ERROR **: Invalid IL code at IL000b in (wrapper unknown) +CertificateContext:PtrToStructure (intptr,System.Type): IL_000b: ret + +The attached patch avoids the call to mono_class_get_method_from_name which +(here) is being called purely to get the signature for the method +(PtrToStructure) by building the MonoMethodSignature explicitly. _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
