diff --git a/local/recipes/wayland/libwayland/source/src/wayland-client.c b/local/recipes/wayland/libwayland/source/src/wayland-client.c index e9ec661d4..f4f8e34bd 100644 --- a/local/recipes/wayland/libwayland/source/src/wayland-client.c +++ b/local/recipes/wayland/libwayland/source/src/wayland-client.c @@ -650,9 +650,9 @@ WL_EXPORT int void (**implementation)(void), void *data) { + if (!proxy) { -+ fprintf(stderr, "FATAL: wl_proxy_add_listener(NULL) — caller=%p impl=%p\n", -+ __builtin_return_address(0), (void*)implementation); -+ abort(); ++ fprintf(stderr, "FATAL: wl_proxy_add_listener(NULL) caller=%p — returning error\n", ++ __builtin_return_address(0)); ++ return -1; + } if (proxy->flags & WL_PROXY_FLAG_WRAPPER) wl_abort("Proxy %p is a wrapper\n", proxy); @@ -2445,10 +2445,11 @@ wl_proxy_get_user_data(struct wl_proxy *proxy) * \memberof wl_proxy */ WL_EXPORT uint32_t -wl_proxy_get_version(struct wl_proxy *proxy) -{ - return proxy->version; -} + wl_proxy_get_version(struct wl_proxy *proxy) + { ++ if (!proxy) return 0; + return proxy->version; + } /** Get the id of a proxy object * @@ -2564,9 +2565,10 @@ wl_proxy_get_interface(struct wl_proxy *proxy) */ WL_EXPORT struct wl_display * wl_proxy_get_display(struct wl_proxy *proxy) -{ - return proxy->display; -} + { ++ if (!proxy) return NULL; + return proxy->display; + } /** Assign a proxy to an event queue *