let's use the C library macro "offsetof"
static inline struct shared_context *shctx_ptr(struct cache *cache)
{
- return (struct shared_context *)((unsigned char *)cache - ((struct shared_context *)NULL)->data);
+ return (struct shared_context *)((unsigned char *)cache - offsetof(struct shared_context, data));
}
static inline struct shared_block *block_ptr(struct cache_entry *entry)
{
- return (struct shared_block *)((unsigned char *)entry - ((struct shared_block *)NULL)->data);
+ return (struct shared_block *)((unsigned char *)entry - offsetof(struct shared_block, data));
}
/* return first block from sh_ssl_sess */
static inline struct shared_block *sh_ssl_sess_first_block(struct sh_ssl_sess_hdr *sh_ssl_sess)
{
- return (struct shared_block *)((unsigned char *)sh_ssl_sess - ((struct shared_block *)NULL)->data);
+ return (struct shared_block *)((unsigned char *)sh_ssl_sess - offsetof(struct shared_block, data));
}