Fix an out-of-bounds write in the llvm backend initialization code.
[mono.git] / mono / mini / debug-mini.c
index 29131f9c3c6f8741a0a31ba2ce37bcf32921864e..f82bf6a9d5f8749cf84513c7d8312a7a4ffd8c25 100644 (file)
@@ -320,8 +320,21 @@ mono_debug_close_method (MonoCompile *cfg)
        mono_debugger_check_breakpoints (method, debug_info);
 
        mono_debug_free_method_jit_info (jit);
-       g_array_free (info->line_numbers, TRUE);
-       g_free (info);
+       mono_debug_free_method (cfg);
+}
+
+void
+mono_debug_free_method (MonoCompile *cfg)
+{
+       MiniDebugMethodInfo *info;
+
+       info = (MiniDebugMethodInfo *) cfg->debug_info;
+       if (info) {
+               if (info->line_numbers)
+                       g_array_free (info->line_numbers, TRUE);
+               g_free (info);
+               cfg->debug_info = NULL; 
+       }
 }
 
 void
@@ -759,8 +772,7 @@ mono_debugger_method_has_breakpoint (MonoMethod *method)
 {
        int i;
 
-       if (!breakpoints || ((method->wrapper_type != MONO_WRAPPER_NONE) &&
-                                                (method->wrapper_type != MONO_WRAPPER_DYNAMIC_METHOD)))
+       if (!breakpoints)
                return 0;
 
        for (i = 0; i < breakpoints->len; i++) {