client: Don't abort when sending a request fails
authorManuel Stoeckl <code@mstoeckl.com>
Sat, 13 Jul 2019 21:54:14 +0000 (17:54 -0400)
committerManuel Stoeckl <code@mstoeckl.com>
Tue, 10 Sep 2019 11:59:50 +0000 (07:59 -0400)
Instead, set a fatal display error which will let an application
using libwayland-client shutdown cleanly.

Signed-off-by: Manuel Stoeckl <code@mstoeckl.com>
src/wayland-client.c

index 7c93c7b..5358500 100644 (file)
@@ -745,14 +745,19 @@ wl_proxy_marshal_array_constructor_versioned(struct wl_proxy *proxy,
        }
 
        closure = wl_closure_marshal(&proxy->object, opcode, args, message);
-       if (closure == NULL)
-               wl_abort("Error marshalling request: %s\n", strerror(errno));
+       if (closure == NULL) {
+               wl_log("Error marshalling request: %s\n", strerror(errno));
+               display_fatal_error(proxy->display, errno);
+               goto err_unlock;
+       }
 
        if (debug_client)
                wl_closure_print(closure, &proxy->object, true);
 
-       if (wl_closure_send(closure, proxy->display->connection))
-               wl_abort("Error sending request: %s\n", strerror(errno));
+       if (wl_closure_send(closure, proxy->display->connection)) {
+               wl_log("Error sending request: %s\n", strerror(errno));
+               display_fatal_error(proxy->display, errno);
+       }
 
        wl_closure_destroy(closure);