aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2017-07-16 22:25:28 -0400
committerDrew DeVault <sir@cmpwn.com>2017-07-18 19:15:56 -0400
commit6c9aa2a2672903a468ab565d787c1afc3c4de725 (patch)
tree512fdb07d13da15484d7aaed523dc5530a607dc5
parent9a4558b62b196c777899088cad1cb0d46aa934d2 (diff)
downloadsway-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.c1
-rw-r--r--swaybar/tray/dbus.c4
-rw-r--r--swaybar/tray/sni.c4
-rw-r--r--swaybar/tray/tray.c1
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() {