1.0.24.42: fix bug 235a
[sbcl.git] / src / runtime / x86-64-darwin-os.c
index 5a05656..6542978 100644 (file)
 #include <stdlib.h>
 #include <stdio.h>
 
-#ifdef MAC_OS_X_VERSION_10_5
+#if __DARWIN_UNIX03
 #include <sys/_structs.h>
 #endif
 
-#ifdef MAC_OS_X_VERSION_10_5
+#if __DARWIN_UNIX03
 
 typedef struct __darwin_ucontext darwin_ucontext;
 typedef struct __darwin_mcontext64 darwin_mcontext;
@@ -359,6 +359,10 @@ catch_exception_raise(mach_port_t exception_port,
 
             backup_thread_state = thread_state;
             open_stack_allocation(&thread_state);
+            /* Reserve a 256 byte zone for signal handlers
+             * to use on the interrupted thread stack.
+             */
+            stack_allocate(&thread_state, 256);
 
             /* Save thread state */
             target_thread_state =
@@ -399,6 +403,7 @@ catch_exception_raise(mach_port_t exception_port,
                  addr < undefined_alien_address + os_vm_page_size) {
             backup_thread_state = thread_state;
             open_stack_allocation(&thread_state);
+            stack_allocate(&thread_state, 256);
 
             /* Save thread state */
             target_thread_state =
@@ -428,6 +433,7 @@ catch_exception_raise(mach_port_t exception_port,
 
             backup_thread_state = thread_state;
             open_stack_allocation(&thread_state);
+            stack_allocate(&thread_state, 256);
 
             /* Save thread state */
             target_thread_state =
@@ -504,6 +510,7 @@ catch_exception_raise(mach_port_t exception_port,
 
             backup_thread_state = thread_state;
             open_stack_allocation(&thread_state);
+            stack_allocate(&thread_state, 256);
 
             /* Save thread state */
             target_thread_state =