summaryrefslogtreecommitdiff
path: root/src/connection.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/connection.c')
-rw-r--r--src/connection.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/connection.c b/src/connection.c
index a10508d..4230f7d 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -587,9 +587,14 @@ wl_connection_demarshal(struct wl_connection *connection,
closure->args[i] = object;
*object = wl_map_lookup(objects, *p);
- if (*object == NULL && *p != 0) {
+ if (*object == WL_ZOMBIE_OBJECT) {
+ /* references object we've already
+ * destroyed client side */
+ *object = NULL;
+ } else if (*object == NULL && *p != 0) {
printf("unknown object (%d), message %s(%s)\n",
*p, message->name, message->signature);
+ *object = NULL;
errno = EINVAL;
goto err;
}