diff --git a/src/c/unixint.d b/src/c/unixint.d index 77785529d..7b08e70e4 100644 --- a/src/c/unixint.d +++ b/src/c/unixint.d @@ -560,8 +560,9 @@ handler_fn_protype(process_interrupt_handler, int sig, siginfo_t *siginfo, void return; signal_object = pop_signal(the_env); errno = old_errno; - if (signal_object != Cnil) + if (signal_object != Cnil) { handle_or_queue(the_env, signal_object, sig); + } } #endif @@ -870,6 +871,8 @@ ecl_interrupt_process(cl_object process, cl_object function) * - In POSIX systems it sends a user level interrupt to * the thread, which then decides how to act. */ + /* If FUNCTION is NIL, we just intend to wake up the + * process from some call to ecl_musleep() */ if (!Null(function)) { /* Trivial spinlock to ensure that the process is past * the section where it establishes a CATCH */ @@ -878,8 +881,6 @@ ecl_interrupt_process(cl_object process, cl_object function) /* And then only care when the process is really active, for * otherwise the signal will be ignored. */ if (process->process.phase == ECL_PROCESS_ACTIVE) { - /* If FUNCTION is NIL, we just intend to wake up the - * process from some call to ecl_musleep() */ function = si_coerce_to_function(function); queue_signal(process->process.env, function); }