Author: zoltan
Date: 2007-08-26 16:48:30 -0400 (Sun, 26 Aug 2007)
New Revision: 84860

Modified:
   trunk/mono/mono/mini/ChangeLog
   trunk/mono/mono/mini/mini-exceptions.c
Log:
2007-08-26  Zoltan Varga  <[EMAIL PROTECTED]>

        * mini-exceptions.c (mono_handle_exception_internal): Skip the first 
frame for
        exceptions raised in unmanaged code. Fixes part of #82594.


Modified: trunk/mono/mono/mini/ChangeLog
===================================================================
--- trunk/mono/mono/mini/ChangeLog      2007-08-26 18:04:03 UTC (rev 84859)
+++ trunk/mono/mono/mini/ChangeLog      2007-08-26 20:48:30 UTC (rev 84860)
@@ -1,3 +1,8 @@
+2007-08-26  Zoltan Varga  <[EMAIL PROTECTED]>
+
+       * mini-exceptions.c (mono_handle_exception_internal): Skip the first 
frame for
+       exceptions raised in unmanaged code. Fixes part of #82594.
+
 2007-08-24  Mark Probst  <[EMAIL PROTECTED]>
 
        * mini.c (mono_method_to_ir), declsec.c

Modified: trunk/mono/mono/mini/mini-exceptions.c
===================================================================
--- trunk/mono/mono/mini/mini-exceptions.c      2007-08-26 18:04:03 UTC (rev 
84859)
+++ trunk/mono/mono/mini/mini-exceptions.c      2007-08-26 20:48:30 UTC (rev 
84860)
@@ -677,6 +677,15 @@
                        g_assert_not_reached ();
                }
 
+               if (ji != (gpointer)-1 && !(ji->code_start <= 
MONO_CONTEXT_GET_IP (ctx) && (((guint8*)ji->code_start + ji->code_size >= 
(guint8*)MONO_CONTEXT_GET_IP (ctx))))) {
+                       /*
+                        * The exception was raised in native code and we got 
back to managed code 
+                        * using the LMF.
+                        */
+                       *ctx = new_ctx;
+                       continue;
+               }
+
                if (ji != (gpointer)-1) {
                        frame_count ++;
                        //printf ("M: %s %d %d.\n", mono_method_full_name 
(ji->method, TRUE), frame_count, test_only);

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to