summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.p.agocs@nokia.com>2011-06-14 11:41:54 +0200
committerKristian Høgsberg <krh@bitplanet.net>2011-06-20 11:25:29 -0400
commit9c36ea776b48decd84828d0b51842c91e2c9124a (patch)
tree986fdc6324aaaa988d7b57063b835e96cab88a56
parenta2db57517b3648f52410c6861704b5c4190416c1 (diff)
Do not leak globals and listeners.
From 3fa2ad7dec42f85795449f33b2a4c9461aa4924d Mon Sep 17 00:00:00 2001 From: Laszlo Agocs <laszlo.p.agocs@nokia.com> Date: Tue, 14 Jun 2011 11:35:28 +0200 Subject: [PATCH] Do not leak globals and listeners.
-rw-r--r--wayland/wayland-client.c10
-rw-r--r--wayland/wayland-server.c9
2 files changed, 16 insertions, 3 deletions
diff --git a/wayland/wayland-client.c b/wayland/wayland-client.c
index 932f8b4..6a27514 100644
--- a/wayland/wayland-client.c
+++ b/wayland/wayland-client.c
@@ -413,8 +413,18 @@ wl_display_connect(const char *name)
WL_EXPORT void
wl_display_destroy(struct wl_display *display)
{
+ struct wl_global *global, *gnext;
+ struct wl_global_listener *listener, *lnext;
+
wl_connection_destroy(display->connection);
wl_hash_table_destroy(display->objects);
+ wl_list_for_each_safe(global, gnext,
+ &display->global_list, link)
+ free(global);
+ wl_list_for_each_safe(listener, lnext,
+ &display->global_listener_list, link)
+ free(listener);
+
close(display->fd);
free(display);
}
diff --git a/wayland/wayland-server.c b/wayland/wayland-server.c
index 886ec69..017db08 100644
--- a/wayland/wayland-server.c
+++ b/wayland/wayland-server.c
@@ -617,10 +617,10 @@ WL_EXPORT void
wl_display_destroy(struct wl_display *display)
{
struct wl_socket *s, *next;
+ struct wl_global *global, *gnext;
- wl_event_loop_destroy(display->loop);
- wl_hash_table_destroy(display->objects);
-
+ wl_event_loop_destroy(display->loop);
+ wl_hash_table_destroy(display->objects);
wl_list_for_each_safe(s, next, &display->socket_list, link) {
close(s->fd);
unlink(s->addr.sun_path);
@@ -629,6 +629,9 @@ wl_display_destroy(struct wl_display *display)
free(s);
}
+ wl_list_for_each_safe(global, gnext, &display->global_list, link)
+ free(global);
+
free(display);
}