fix pthread_cleanup_pop(1) crash in non-thread-capable, static-linked programs
[musl] / src / thread / cancellation.c
1 #include "pthread_impl.h"
2
3 void __do_cleanup_push();
4 void __do_cleanup_pop();
5
6 void _pthread_cleanup_push(struct __ptcb *cb, void (*f)(void *), void *x)
7 {
8         cb->__f = f;
9         cb->__x = x;
10         __do_cleanup_push(cb, f, x);
11 }
12
13 void _pthread_cleanup_pop(struct __ptcb *cb, int run)
14 {
15         __do_cleanup_pop(cb, run);
16         if (run) cb->__f(cb->__x);
17 }
18
19 static void dummy()
20 {
21 }
22 weak_alias(dummy, __do_cleanup_push);
23 weak_alias(dummy, __do_cleanup_pop);