SHOW:
|
|
- or go back to the newest paste.
1 | #include <stdio.h> | |
2 | ||
3 | #include "black_magic.h" | |
4 | ||
5 | ||
6 | typedef int (*func) (void *, void *, size_t); | |
7 | ||
8 | #define NFUNCS 3 | |
9 | ||
10 | int f0(void *dst, void *src, size_t n) { ... } | |
11 | int f1(void *dst, void *src, size_t n) { ... } | |
12 | int f2(void *dst, void *src, size_t n) { ... } | |
13 | ||
14 | func funcs[NFUNCS] = { | |
15 | f0, f1, f2 | |
16 | }; | |
17 | ||
18 | ||
19 | int _wrapper(void *dst, void *src, size_t n) | |
20 | { | |
21 | printf("%p %p %lu\n", dst, src, n); | |
22 | - | return ((func)black_magic_get_wrapper())(dst, src, n); |
22 | + | return ((func)black_magic_get_wrapped())(dst, src, n); |
23 | } | |
24 | ||
25 | ||
26 | void init() | |
27 | { | |
28 | for (int i = 0; i < NFUNCS; i++) { | |
29 | black_magic_wrap(funcs[i], _wrapper); | |
30 | } | |
31 | } | |
32 | ||
33 | ||
34 | int main(void) | |
35 | { | |
36 | int x = 13; | |
37 | int y; | |
38 | ||
39 | init(); | |
40 | ||
41 | ((func)(funcs[1]))(&y, &x, sizeof(int)); | |
42 | ||
43 | return 0; | |
44 | } | |
45 |