2003-01-07 Dietmar Maurer <dietmar@ximian.com>
[mono.git] / mono / jit / exception.c
index 6c73bb652b43e80470d68b3869dbf79f8666159b..3cde448b596fa3b44d509f6abf101f31326bb622 100644 (file)
@@ -293,9 +293,9 @@ x86_unwind_native_frame (MonoDomain *domain, MonoJitTlsData *jit_tls, struct sig
                        MONO_CONTEXT_SET_IP (new_ctx, frame->return_address);
                        frame = frame->next;
                        MONO_CONTEXT_SET_BP (new_ctx, frame);
-
-                       /* stop if we detect an unexpected managed frame */
-                       if (mono_jit_info_table_find (domain, frame->return_address)) {
+                       
+                       /* stop if !frame or when we detect an unexpected managed frame */
+                       if (!frame || mono_jit_info_table_find (domain, frame->return_address)) {
                                if (trace) {
                                        g_free (*trace);
                                        *trace = NULL;
@@ -762,11 +762,9 @@ ves_icall_get_frame_info (gint32 skip, MonoBoolean need_file_info,
 
        do {
                ji = mono_arch_find_jit_info (domain, jit_tls, &ctx, &new_ctx, NULL, &lmf, native_offset, NULL);
-               g_assert (ji);
-
                ctx = new_ctx;
                
-               if (MONO_CONTEXT_GET_BP (&ctx) >= jit_tls->end_of_stack)
+               if (!ji || MONO_CONTEXT_GET_BP (&ctx) >= jit_tls->end_of_stack)
                        return FALSE;
 
        } while (skip-- > 0);