chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
788f75a
)
dbus: fix serialization of calendar timers
author
Lennart Poettering
<lennart@poettering.net>
Tue, 8 Jan 2013 19:00:01 +0000
(20:00 +0100)
committer
Lennart Poettering
<lennart@poettering.net>
Tue, 8 Jan 2013 19:00:01 +0000
(20:00 +0100)
src/core/dbus-timer.c
patch
|
blob
|
history
diff --git
a/src/core/dbus-timer.c
b/src/core/dbus-timer.c
index 11d18cbd8342c5fa38ae8e8691c97840b17edf11..b22fcb59341953333f83ec3a906190c230bfc440 100644
(file)
--- a/
src/core/dbus-timer.c
+++ b/
src/core/dbus-timer.c
@@
-69,22
+69,28
@@
static int bus_timer_append_timers(DBusMessageIter *i, const char *property, voi
return -ENOMEM;
LIST_FOREACH(value, k, p->values) {
return -ENOMEM;
LIST_FOREACH(value, k, p->values) {
-
char *buf
;
+
_cleanup_free_ char *buf = NULL
;
const char *t;
size_t l;
bool b;
t = timer_base_to_string(k->base);
const char *t;
size_t l;
bool b;
t = timer_base_to_string(k->base);
- assert(endswith(t, "Sec"));
- /* s/Sec/USec/ */
- l = strlen(t);
- buf = new(char, l+2);
- if (!buf)
- return -ENOMEM;
+ if (endswith(t, "Sec")) {
+
+ /* s/Sec/USec/ */
+ l = strlen(t);
+ buf = new(char, l+2);
+ if (!buf)
+ return -ENOMEM;
- memcpy(buf, t, l-3);
- memcpy(buf+l-3, "USec", 5);
+ memcpy(buf, t, l-3);
+ memcpy(buf+l-3, "USec", 5);
+ } else {
+ buf = strdup(t);
+ if (!buf)
+ return -ENOMEM;
+ }
b = dbus_message_iter_open_container(&sub, DBUS_TYPE_STRUCT, NULL, &sub2) &&
dbus_message_iter_append_basic(&sub2, DBUS_TYPE_STRING, &buf) &&
b = dbus_message_iter_open_container(&sub, DBUS_TYPE_STRUCT, NULL, &sub2) &&
dbus_message_iter_append_basic(&sub2, DBUS_TYPE_STRING, &buf) &&
@@
-92,7
+98,6
@@
static int bus_timer_append_timers(DBusMessageIter *i, const char *property, voi
dbus_message_iter_append_basic(&sub2, DBUS_TYPE_UINT64, &k->next_elapse) &&
dbus_message_iter_close_container(&sub, &sub2);
dbus_message_iter_append_basic(&sub2, DBUS_TYPE_UINT64, &k->next_elapse) &&
dbus_message_iter_close_container(&sub, &sub2);
- free(buf);
if (!b)
return -ENOMEM;
}
if (!b)
return -ENOMEM;
}