.
OBS-URL: https://build.opensuse.org/package/show/Base:System/systemd?expand=0&rev=555
This commit is contained in:
parent
738fd16fab
commit
333871ca0c
@ -27,10 +27,10 @@ Index: systemd-210/src/libsystemd/sd-bus/sd-bus.c
|
|||||||
+
|
+
|
||||||
+static inline void bus_drop_reply_callback(sd_bus *bus, const struct reply_callback *c)
|
+static inline void bus_drop_reply_callback(sd_bus *bus, const struct reply_callback *c)
|
||||||
+{
|
+{
|
||||||
+ struct reply_callback *cc;
|
+ struct reply_callback *cc;
|
||||||
+
|
+
|
||||||
+ cc = bus_get_reply_callback(bus, c->cookie);
|
+ cc = bus_get_reply_callback(bus, c->cookie);
|
||||||
+ assert(cc == NULL || cc == c);
|
+ assert(cc == NULL || cc == c);
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
static int hello_callback(sd_bus *bus, sd_bus_message *reply, void *userdata, sd_bus_error *error) {
|
static int hello_callback(sd_bus *bus, sd_bus_message *reply, void *userdata, sd_bus_error *error) {
|
||||||
@ -41,7 +41,7 @@ Index: systemd-210/src/libsystemd/sd-bus/sd-bus.c
|
|||||||
c->timeout = calc_elapse(m->timeout);
|
c->timeout = calc_elapse(m->timeout);
|
||||||
|
|
||||||
- r = hashmap_put(bus->reply_callbacks, &c->cookie, c);
|
- r = hashmap_put(bus->reply_callbacks, &c->cookie, c);
|
||||||
+ r = bus_add_reply_callback(bus, c, c->cookie);
|
+ r = bus_add_reply_callback(bus, c, c->cookie);
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
free(c);
|
free(c);
|
||||||
return r;
|
return r;
|
||||||
@ -59,7 +59,7 @@ Index: systemd-210/src/libsystemd/sd-bus/sd-bus.c
|
|||||||
|
|
||||||
assert_se(prioq_pop(bus->reply_callbacks_prioq) == c);
|
assert_se(prioq_pop(bus->reply_callbacks_prioq) == c);
|
||||||
- hashmap_remove(bus->reply_callbacks, &c->cookie);
|
- hashmap_remove(bus->reply_callbacks, &c->cookie);
|
||||||
+ bus_drop_reply_callback(bus, c->cookie);
|
+ bus_drop_reply_callback(bus, c);
|
||||||
|
|
||||||
bus->current = m;
|
bus->current = m;
|
||||||
bus->iteration_counter ++;
|
bus->iteration_counter ++;
|
||||||
@ -68,8 +68,8 @@ Index: systemd-210/src/libsystemd/sd-bus/sd-bus.c
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
- c = hashmap_remove(bus->reply_callbacks, &m->reply_cookie);
|
- c = hashmap_remove(bus->reply_callbacks, &m->reply_cookie);
|
||||||
+ /* caveat emptor: reply_cookie is 32bit, but the hashmap lookup uses a 64bit
|
+ /* caveat emptor: reply_cookie is 32bit, but the hashmap lookup uses a 64bit
|
||||||
+ * cookie pointer - without type checking, */
|
+ * cookie pointer - without type checking, */
|
||||||
+ c = bus_get_reply_callback(bus, m->reply_cookie);
|
+ c = bus_get_reply_callback(bus, m->reply_cookie);
|
||||||
if (!c)
|
if (!c)
|
||||||
return 0;
|
return 0;
|
||||||
@ -79,8 +79,8 @@ Index: systemd-210/src/libsystemd/sd-bus/sd-bus.c
|
|||||||
prioq_remove(bus->reply_callbacks_prioq, c, &c->prioq_idx);
|
prioq_remove(bus->reply_callbacks_prioq, c, &c->prioq_idx);
|
||||||
|
|
||||||
- hashmap_remove(bus->reply_callbacks, &c->cookie);
|
- hashmap_remove(bus->reply_callbacks, &c->cookie);
|
||||||
+ /* Remove callback from reply_callbacks hashmap */
|
+ /* Remove callback from reply_callbacks hashmap */
|
||||||
+ bus_drop_reply_callback(bus, c->cookie);
|
+ bus_drop_reply_callback(bus, c);
|
||||||
|
|
||||||
bus->current = m;
|
bus->current = m;
|
||||||
bus->iteration_counter++;
|
bus->iteration_counter++;
|
||||||
|
Loading…
Reference in New Issue
Block a user