From 8fd60c683a3da7299b0c891c73e26385ed895f16 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Wed, 5 Jun 2013 16:39:50 -0500 Subject: [PATCH] Change WL_ZOMBIE_OBJECT from 0x2 to an actual pointer In order to use the second-lowest bit of each pointer in wl_map for the WL_MAP_ENTRY_LEGACY flag, every pointer has to be a multiple of 4. This was a good assumption, except with WL_ZOMBIE_OBJECT. This commit creates an actual static variable to which WL_ZOMBIE_OBJECT now points. Since things are only every compared to WL_ZOMBIE_OBJECT with "==" or "!=", the only thing that matters is that it is unique. Signed-off-by: Jason Ekstrand --- src/wayland-private.h | 5 +++-- src/wayland-util.c | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/wayland-private.h b/src/wayland-private.h index a6485384..6f7a3471 100644 --- a/src/wayland-private.h +++ b/src/wayland-private.h @@ -34,13 +34,14 @@ const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *)__mptr - offsetof(type,member) );}) -#define WL_ZOMBIE_OBJECT ((void *) 2) - #define WL_MAP_SERVER_SIDE 0 #define WL_MAP_CLIENT_SIDE 1 #define WL_SERVER_ID_START 0xff000000 #define WL_CLOSURE_MAX_ARGS 20 +extern struct wl_object global_zombie_object; +#define WL_ZOMBIE_OBJECT ((void*)&global_zombie_object) + /* Flags for wl_map_insert_new and wl_map_insert_at. Flags can be queried with * wl_map_lookup_flags. The current implementation has room for 1 bit worth of * flags. If more flags are ever added, the implementation of wl_map will have diff --git a/src/wayland-util.c b/src/wayland-util.c index 162b352d..7a0b268f 100644 --- a/src/wayland-util.c +++ b/src/wayland-util.c @@ -29,6 +29,8 @@ #include "wayland-util.h" #include "wayland-private.h" +struct wl_object global_zombie_object; + WL_EXPORT void wl_list_init(struct wl_list *list) {