X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fx86-64-darwin-os.c;h=7f24fb72c3cc31d47683a3822a134d931dcd77ec;hb=d3af5593ffff1c39a2f8fa8113704803f347e22f;hp=7b8ca683f777da8df994a51a52d5d2f216263919;hpb=e8c80f67856e7fd94f64574d10b5637fef5af1f6;p=sbcl.git diff --git a/src/runtime/x86-64-darwin-os.c b/src/runtime/x86-64-darwin-os.c index 7b8ca68..7f24fb7 100644 --- a/src/runtime/x86-64-darwin-os.c +++ b/src/runtime/x86-64-darwin-os.c @@ -471,7 +471,8 @@ catch_exception_raise(mach_port_t exception_port, #ifdef LISP_FEATURE_SB_THREAD thread_mutex_unlock(&mach_exception_lock); #endif - return KERN_SUCCESS; + ret = KERN_SUCCESS; + break; case EXC_BAD_INSTRUCTION: @@ -563,14 +564,21 @@ catch_exception_raise(mach_port_t exception_port, #ifdef LISP_FEATURE_SB_THREAD thread_mutex_unlock(&mach_exception_lock); #endif - return KERN_SUCCESS; + ret = KERN_SUCCESS; + break; default: #ifdef LISP_FEATURE_SB_THREAD thread_mutex_unlock(&mach_exception_lock); #endif - return KERN_INVALID_RIGHT; + ret = KERN_INVALID_RIGHT; } + + mach_port_deallocate (current_mach_task, exception_port); + mach_port_deallocate (current_mach_task, thread); + mach_port_deallocate (current_mach_task, task); + + return ret; } #endif