diff --git a/src/connection.c b/src/connection.c index 6742f19c..45a2e784 100644 --- a/src/connection.c +++ b/src/connection.c @@ -163,10 +163,10 @@ wl_connection_create(int fd) { struct wl_connection *connection; - connection = malloc(sizeof *connection); + connection = zalloc(sizeof *connection); if (connection == NULL) return NULL; - memset(connection, 0, sizeof *connection); + connection->fd = fd; return connection; diff --git a/src/wayland-client.c b/src/wayland-client.c index 509be08c..613767ee 100644 --- a/src/wayland-client.c +++ b/src/wayland-client.c @@ -331,12 +331,10 @@ proxy_create(struct wl_proxy *factory, const struct wl_interface *interface) struct wl_proxy *proxy; struct wl_display *display = factory->display; - proxy = malloc(sizeof *proxy); + proxy = zalloc(sizeof *proxy); if (proxy == NULL) return NULL; - memset(proxy, 0, sizeof *proxy); - proxy->object.interface = interface; proxy->display = display; proxy->queue = factory->queue; @@ -387,12 +385,10 @@ wl_proxy_create_for_id(struct wl_proxy *factory, struct wl_proxy *proxy; struct wl_display *display = factory->display; - proxy = malloc(sizeof *proxy); + proxy = zalloc(sizeof *proxy); if (proxy == NULL) return NULL; - memset(proxy, 0, sizeof *proxy); - proxy->object.interface = interface; proxy->object.id = id; proxy->display = display; @@ -817,14 +813,12 @@ wl_display_connect_to_fd(int fd) if (debug && (strstr(debug, "client") || strstr(debug, "1"))) debug_client = 1; - display = malloc(sizeof *display); + display = zalloc(sizeof *display); if (display == NULL) { close(fd); return NULL; } - memset(display, 0, sizeof *display); - display->fd = fd; wl_map_init(&display->objects, WL_MAP_CLIENT_SIDE); wl_event_queue_init(&display->default_queue, display); diff --git a/src/wayland-private.h b/src/wayland-private.h index 58ac952b..0e3420c3 100644 --- a/src/wayland-private.h +++ b/src/wayland-private.h @@ -29,6 +29,7 @@ #define WAYLAND_PRIVATE_H #include +#include #define WL_HIDE_DEPRECATED 1 @@ -216,4 +217,10 @@ struct wl_display; struct wl_array * wl_display_get_additional_shm_formats(struct wl_display *display); +static inline void * +zalloc(size_t s) +{ + return calloc(1, s); +} + #endif diff --git a/src/wayland-server.c b/src/wayland-server.c index 55c0cf92..9e26b185 100644 --- a/src/wayland-server.c +++ b/src/wayland-server.c @@ -415,11 +415,10 @@ wl_client_create(struct wl_display *display, int fd) struct wl_client *client; socklen_t len; - client = malloc(sizeof *client); + client = zalloc(sizeof *client); if (client == NULL) return NULL; - memset(client, 0, sizeof *client); client->display = display; client->source = wl_event_loop_add_fd(display->loop, fd, WL_EVENT_READABLE, @@ -854,11 +853,10 @@ wl_socket_alloc(void) { struct wl_socket *s; - s = malloc(sizeof *s); + s = zalloc(sizeof *s); if (!s) return NULL; - memset(s, 0, sizeof *s); s->fd = -1; s->fd_lock = -1; diff --git a/src/wayland-shm.c b/src/wayland-shm.c index 0cd8c118..359c3bd5 100644 --- a/src/wayland-shm.c +++ b/src/wayland-shm.c @@ -536,12 +536,10 @@ wl_shm_buffer_begin_access(struct wl_shm_buffer *buffer) sigbus_data = pthread_getspecific(wl_shm_sigbus_data_key); if (sigbus_data == NULL) { - sigbus_data = malloc(sizeof *sigbus_data); + sigbus_data = zalloc(sizeof *sigbus_data); if (sigbus_data == NULL) return; - memset(sigbus_data, 0, sizeof *sigbus_data); - pthread_setspecific(wl_shm_sigbus_data_key, sigbus_data); }