diff options
author | Drew DeVault <sir@cmpwn.com> | 2017-07-16 22:25:28 -0400 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2017-07-18 19:15:56 -0400 |
commit | 6c9aa2a2672903a468ab565d787c1afc3c4de725 (patch) | |
tree | 512fdb07d13da15484d7aaed523dc5530a607dc5 | |
parent | 9a4558b62b196c777899088cad1cb0d46aa934d2 (diff) | |
download | sway-0.14-rc5.zip sway-0.14-rc5.tar.gz sway-0.14-rc5.tar.bz2 |
Merge pull request #1283 from 4e554c4c/memory_leak0.14-rc5
Fix memory leaks in swaybar tray
-rw-r--r-- | swaybar/event_loop.c | 1 | ||||
-rw-r--r-- | swaybar/tray/dbus.c | 4 | ||||
-rw-r--r-- | swaybar/tray/sni.c | 4 | ||||
-rw-r--r-- | swaybar/tray/tray.c | 1 |
4 files changed, 9 insertions, 1 deletions
diff --git a/swaybar/event_loop.c b/swaybar/event_loop.c index b5861dd..0d1be1d 100644 --- a/swaybar/event_loop.c +++ b/swaybar/event_loop.c @@ -105,6 +105,7 @@ static int timer_item_timer_cmp(const void *_timer_item, const void *_timer) { bool remove_timer(timer_t timer) { int index = list_seq_find(event_loop.timers, timer_item_timer_cmp, &timer); if (index != -1) { + free(event_loop.timers->items[index]); list_del(event_loop.timers, index); return true; } diff --git a/swaybar/tray/dbus.c b/swaybar/tray/dbus.c index 2a8cefc..f562bae 100644 --- a/swaybar/tray/dbus.c +++ b/swaybar/tray/dbus.c @@ -108,7 +108,7 @@ static dbus_bool_t add_timeout(DBusTimeout *timeout, void *_data) { timer_settime(*timer, 0, &time, NULL); - dbus_timeout_set_data(timeout, timer, free); + dbus_timeout_set_data(timeout, timer, NULL); sway_log(L_DEBUG, "Adding DBus timeout. Interval: %ds %dms", interval_sec, interval_msec); add_timer(*timer, dispatch_timeout, timeout); @@ -121,6 +121,8 @@ static void remove_timeout(DBusTimeout *timeout, void *_data) { if (timer) { remove_timer(*timer); + timer_delete(*timer); + free(timer); } } diff --git a/swaybar/tray/sni.c b/swaybar/tray/sni.c index d9a5ca8..c9d0065 100644 --- a/swaybar/tray/sni.c +++ b/swaybar/tray/sni.c @@ -160,6 +160,7 @@ static void reply_icon(DBusPendingCall *pending, void *_data) { dirty = true; dbus_message_unref(reply); + dbus_pending_call_unref(pending); return; } else { sway_log(L_ERROR, "Could not create image surface"); @@ -170,6 +171,7 @@ bail: if (reply) { dbus_message_unref(reply); } + dbus_pending_call_unref(pending); sway_log(L_ERROR, "Could not get icon from item"); return; } @@ -266,6 +268,7 @@ static void reply_icon_name(DBusPendingCall *pending, void *_data) { dirty = true; dbus_message_unref(reply); + dbus_pending_call_unref(pending); return; } @@ -273,6 +276,7 @@ bail: if (reply) { dbus_message_unref(reply); } + dbus_pending_call_unref(pending); // Now try the pixmap send_icon_msg(item); return; diff --git a/swaybar/tray/tray.c b/swaybar/tray/tray.c index c1d8dde..91c3af0 100644 --- a/swaybar/tray/tray.c +++ b/swaybar/tray/tray.c @@ -99,6 +99,7 @@ static void get_items_reply(DBusPendingCall *pending, void *_data) { bail: dbus_message_unref(reply); + dbus_pending_call_unref(pending); return; } static void get_items() { |