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