[PATCH wayland] add wl_abort private function

Marek Chalupa mchqwerty at gmail.com
Mon Nov 16 02:49:02 PST 2015


On many places in the code we use wl_log + abort or wl_log + assert(0).
Replace these with one call to wl_abort, so that we don't mix abort(),
assert(0) and we'll save few lines

Signed-off-by: Marek Chalupa <mchqwerty at gmail.com>
---
 src/connection.c      | 22 +++++++---------------
 src/wayland-client.c  | 12 ++++--------
 src/wayland-private.h |  1 +
 src/wayland-util.c    | 12 ++++++++++++
 tests/sanity-test.c   |  7 ++++++-
 5 files changed, 30 insertions(+), 24 deletions(-)

diff --git a/src/connection.c b/src/connection.c
index b3d9bd4..6742f19 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -33,7 +33,6 @@
 #include <stdio.h>
 #include <errno.h>
 #include <sys/uio.h>
-#include <assert.h>
 #include <fcntl.h>
 #include <unistd.h>
 #include <sys/types.h>
@@ -569,16 +568,12 @@ wl_closure_marshal(struct wl_object *sender, uint32_t opcode,
 		case 'h':
 			fd = args[i].h;
 			dup_fd = wl_os_dupfd_cloexec(fd, 0);
-			if (dup_fd < 0) {
-				wl_log("dup failed: %m");
-				abort();
-			}
+			if (dup_fd < 0)
+				wl_abort("dup failed: %s\n", strerror(errno));
 			closure->args[i].h = dup_fd;
 			break;
 		default:
-			wl_log("unhandled format code: '%c'\n",
-				arg.type);
-			assert(0);
+			wl_abort("unhandled format code: '%c'\n", arg.type);
 			break;
 		}
 	}
@@ -771,8 +766,7 @@ wl_connection_demarshal(struct wl_connection *connection,
 			closure->args[i].h = fd;
 			break;
 		default:
-			wl_log("unknown type\n");
-			assert(0);
+			wl_abort("unknown type\n");
 			break;
 		}
 	}
@@ -906,8 +900,7 @@ convert_arguments_to_ffi(const char *signature, uint32_t flags,
 			ffi_args[i] = &args[i].h;
 			break;
 		default:
-			wl_log("unknown type\n");
-			assert(0);
+			wl_abort("unknown type\n");
 			break;
 		}
 	}
@@ -938,9 +931,8 @@ wl_closure_invoke(struct wl_closure *closure, uint32_t flags,
 
 	implementation = target->implementation;
 	if (!implementation[opcode]) {
-		wl_log("listener function for opcode %u of %s is NULL\n",
-			opcode, target->interface->name);
-		abort();
+		wl_abort("listener function for opcode %u of %s is NULL\n",
+			 opcode, target->interface->name);
 	}
 	ffi_call(&cif, implementation[opcode], NULL, ffi_args);
 }
diff --git a/src/wayland-client.c b/src/wayland-client.c
index b1c600f..509be08 100644
--- a/src/wayland-client.c
+++ b/src/wayland-client.c
@@ -597,18 +597,14 @@ wl_proxy_marshal_array_constructor(struct wl_proxy *proxy,
 	}
 
 	closure = wl_closure_marshal(&proxy->object, opcode, args, message);
-	if (closure == NULL) {
-		wl_log("Error marshalling request: %m\n");
-		abort();
-	}
+	if (closure == NULL)
+		wl_abort("Error marshalling request: %s\n", strerror(errno));
 
 	if (debug_client)
 		wl_closure_print(closure, &proxy->object, true);
 
-	if (wl_closure_send(closure, proxy->display->connection)) {
-		wl_log("Error sending request: %m\n");
-		abort();
-	}
+	if (wl_closure_send(closure, proxy->display->connection))
+		wl_abort("Error sending request: %s\n", strerror(errno));
 
 	wl_closure_destroy(closure);
 
diff --git a/src/wayland-private.h b/src/wayland-private.h
index da9040a..58ac952 100644
--- a/src/wayland-private.h
+++ b/src/wayland-private.h
@@ -209,6 +209,7 @@ wl_closure_destroy(struct wl_closure *closure);
 extern wl_log_func_t wl_log_handler;
 
 void wl_log(const char *fmt, ...);
+void wl_abort(const char *fmt, ...);
 
 struct wl_display;
 
diff --git a/src/wayland-util.c b/src/wayland-util.c
index 00265e9..e782309 100644
--- a/src/wayland-util.c
+++ b/src/wayland-util.c
@@ -385,3 +385,15 @@ wl_log(const char *fmt, ...)
 	wl_log_handler(fmt, argp);
 	va_end(argp);
 }
+
+void
+wl_abort(const char *fmt, ...)
+{
+	va_list argp;
+
+	va_start(argp, fmt);
+	wl_log_handler(fmt, argp);
+	va_end(argp);
+
+	abort();
+}
diff --git a/tests/sanity-test.c b/tests/sanity-test.c
index 3f589b5..65d986d 100644
--- a/tests/sanity-test.c
+++ b/tests/sanity-test.c
@@ -31,8 +31,8 @@
 
 #include "test-runner.h"
 #include "wayland-util.h"
+#include "wayland-private.h"
 
-#define WL_HIDE_DEPRECATED
 #include "test-compositor.h"
 
 extern int leak_check_enabled;
@@ -56,6 +56,11 @@ FAIL_TEST(fail_abort)
 	abort();
 }
 
+FAIL_TEST(fail_wl_abort)
+{
+	wl_abort("Abort the program\n");
+}
+
 FAIL_TEST(fail_kill)
 {
 	kill(getpid(), SIGTERM);
-- 
2.5.0



More information about the wayland-devel mailing list