revert to deleting kernel-level timer from cancellation handler
[musl] / src / time / timer_delete.c
index d7c7670..7c82b18 100644 (file)
@@ -3,10 +3,7 @@
 
 int timer_delete(timer_t t)
 {
-       if (t->thread) pthread_cancel(t->thread);
-       else {
-               if (t->timerid >= 0) __syscall(SYS_timer_delete, t->timerid);
-               free(t);
-       }
-       return 0;
+       if ((uintptr_t)t & 1)
+               return __syscall(SYS_timer_delete, ((unsigned long)t / 2));
+       return pthread_cancel(t);
 }