| extern void *malloc(__SIZE_TYPE__); | |
| typedef struct T T; | |
| struct T { | |
| void (*destroy)(void *); | |
| }; | |
| void destroy(union { void *this; } __attribute__((transparent_union))); | |
| static const typeof(destroy) *_destroy = (const typeof(destroy)*)destroy; | |
| void destroy(void *this); | |
| static T *create_empty(void) | |
| { | |
| T *this = malloc(sizeof(*this)); | |
| *this = (typeof(*this)){ _destroy }; | |
| return this; | |
| } | |
| void openssl_crl_load(void) | |
| { | |
| T *this = create_empty(); | |
| destroy(this); | |
| } |