1extern void *malloc(__SIZE_TYPE__);
2typedef struct T T;
3struct T {
4    void (*destroy)(void *);
5};
6void destroy(union { void *this; } __attribute__((transparent_union)));
7static const typeof(destroy) *_destroy  = (const typeof(destroy)*)destroy;
8void destroy(void *this);
9static T *create_empty(void)
10{
11  T *this = malloc(sizeof(*this));
12  *this = (typeof(*this)){ _destroy };
13  return this;
14}
15void openssl_crl_load(void)
16{
17  T *this = create_empty();
18  destroy(this);
19}
20