summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2010-07-11 03:59:49 +0200
committerLennart Poettering <lennart@poettering.net>2010-07-11 03:59:59 +0200
commitc0bd0cf7ff0abdc8b51d58fbd7819ec54917be30 (patch)
tree61fa992a396904ca1b0447eb0f64414333ef1705 /src
parent90d473a1c05c692d0beaac3ff939b01f930fcada (diff)
dbus: don't hit an assert if we sent a changed signal for something not in the dbus queue (i.e. because it was deleted before it was fully created
Diffstat (limited to 'src')
-rw-r--r--src/dbus-job.c7
-rw-r--r--src/dbus-unit.c7
2 files changed, 8 insertions, 6 deletions
diff --git a/src/dbus-job.c b/src/dbus-job.c
index 653e11d18c..4572589cd3 100644
--- a/src/dbus-job.c
+++ b/src/dbus-job.c
@@ -172,10 +172,11 @@ void bus_job_send_change_signal(Job *j) {
DBusMessage *m = NULL;
assert(j);
- assert(j->in_dbus_queue);
- LIST_REMOVE(Job, dbus_queue, j->manager->dbus_job_queue, j);
- j->in_dbus_queue = false;
+ if (j->in_dbus_queue) {
+ LIST_REMOVE(Job, dbus_queue, j->manager->dbus_job_queue, j);
+ j->in_dbus_queue = false;
+ }
if (!bus_has_subscriber(j->manager) && !j->bus_client) {
j->sent_dbus_new_signal = true;
diff --git a/src/dbus-unit.c b/src/dbus-unit.c
index ad0c193eae..735e5a53f2 100644
--- a/src/dbus-unit.c
+++ b/src/dbus-unit.c
@@ -371,10 +371,11 @@ void bus_unit_send_change_signal(Unit *u) {
DBusMessage *m = NULL;
assert(u);
- assert(u->meta.in_dbus_queue);
- LIST_REMOVE(Meta, dbus_queue, u->meta.manager->dbus_unit_queue, &u->meta);
- u->meta.in_dbus_queue = false;
+ if (u->meta.in_dbus_queue) {
+ LIST_REMOVE(Meta, dbus_queue, u->meta.manager->dbus_unit_queue, &u->meta);
+ u->meta.in_dbus_queue = false;
+ }
if (!bus_has_subscriber(u->meta.manager)) {
u->meta.sent_dbus_new_signal = true;