- __wait(&self->delete_timer, 0, 0, 1);
- __syscall(SYS_timer_delete, self->result);
+ if ((id = self->timer_id) >= 0) {
+ __syscall(SYS_rt_sigprocmask, SIG_UNBLOCK,
+ SIGTIMER_SET, 0, _NSIG/8);
+ __wait(&self->timer_id, 0, id, 1);
+ __syscall(SYS_timer_delete, id);
+ }