This is to avoid gcc warnings when building with strict-aliasing optimization
fix for another srict-aliasing problem, you can typecast a reference to a void pointer to anything, you cannot typecast a reference to a struct. From: Luca Berra <bluca@vodka.it> Signed-off-by: Neil Brown <neilb@suse.de>
This commit is contained in:
parent
382245c31f
commit
b1ec2d6a74
8
dlink.h
8
dlink.h
|
@ -4,16 +4,16 @@
|
||||||
|
|
||||||
struct __dl_head
|
struct __dl_head
|
||||||
{
|
{
|
||||||
struct __dl_head * dh_prev;
|
void * dh_prev;
|
||||||
struct __dl_head * dh_next;
|
void * dh_next;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define dl_alloc(size) ((void*)(((char*)calloc(1,(size)+sizeof(struct __dl_head)))+sizeof(struct __dl_head)))
|
#define dl_alloc(size) ((void*)(((char*)calloc(1,(size)+sizeof(struct __dl_head)))+sizeof(struct __dl_head)))
|
||||||
#define dl_new(t) ((t*)dl_alloc(sizeof(t)))
|
#define dl_new(t) ((t*)dl_alloc(sizeof(t)))
|
||||||
#define dl_newv(t,n) ((t*)dl_alloc(sizeof(t)*n))
|
#define dl_newv(t,n) ((t*)dl_alloc(sizeof(t)*n))
|
||||||
|
|
||||||
#define dl_next(p) *((void**)&(((struct __dl_head*)(p))[-1].dh_next))
|
#define dl_next(p) *(&(((struct __dl_head*)(p))[-1].dh_next))
|
||||||
#define dl_prev(p) *((void**)&(((struct __dl_head*)(p))[-1].dh_prev))
|
#define dl_prev(p) *(&(((struct __dl_head*)(p))[-1].dh_prev))
|
||||||
|
|
||||||
void *dl_head(void);
|
void *dl_head(void);
|
||||||
char *dl_strdup(char *);
|
char *dl_strdup(char *);
|
||||||
|
|
Loading…
Reference in New Issue