win32-os.c: Split up handle_exception
[sbcl.git] / src / runtime / breakpoint.c
index a325693..638b2e8 100644 (file)
@@ -116,7 +116,7 @@ static long compute_offset(os_context_t *context, lispobj code)
             return 0;
         else {
             unsigned long offset = pc - code_start;
-            if (offset >= codeptr->code_size)
+            if (offset >= (N_WORD_BYTES * fixnum_value(codeptr->code_size)))
                 return 0;
             else
                 return make_fixnum(offset);
@@ -130,7 +130,9 @@ void handle_breakpoint(os_context_t *context)
 
     fake_foreign_function_call(context);
 
+#ifndef LISP_FEATURE_SB_SAFEPOINT
     unblock_gc_signals(0, 0);
+#endif
     context_sap = alloc_sap(context);
     code = find_code(context);
 
@@ -155,7 +157,9 @@ void *handle_fun_end_breakpoint(os_context_t *context)
 
     fake_foreign_function_call(context);
 
+#ifndef LISP_FEATURE_SB_SAFEPOINT
     unblock_gc_signals(0, 0);
+#endif
     context_sap = alloc_sap(context);
     code = find_code(context);
     codeptr = (struct code *)native_pointer(code);