- if(!data->pending_handler)
- maybe_defer_handler(interrupt_maybe_gc_int,data,0,0,0);
+ if((!data->pending_handler) &&
+ maybe_defer_handler(interrupt_maybe_gc_int,data,0,0,0)) {
+ /* Leave the signals blocked just as if it was deferred
+ * the normal way and set the pending_mask. */
+ sigcopyset(&(data->pending_mask),&old_mask);
+ } else {
+ sigprocmask(SIG_SETMASK,&old_mask,0);
+ }