Do not use parameters used when configuring match but the params
that actually caused the callback to be called. This is important
because eg. one can specify path_namespace in match, but it's not
parameter that will be in message - it's "match parameter" only(!)
Change-Id: I4d3d922887accf9402282ae0210d682f170bbdb8
} while (0)
COPY_COND(event_id);
- COPY_COND(sender);
- COPY_COND(interface);
- COPY_COND(member);
- COPY_COND(path);
COPY_COND(path_namespace);
COPY_COND(destination);
#undef COPY_COND
+ // copy actual signal data
+ // While it's possible to copy some of the values from userdata, which was
+ // used during signal registration but at least path must be copied from
+ // function parameters
+ ds_ev_data.sender = strdup(sender_name);
+ ds_ev_data.path = strdup(object_path);
+ ds_ev_data.interface = strdup(interface_name);
+ ds_ev_data.member = strdup(signal_name);
+ if (!ds_ev_data.sender || !ds_ev_data.path || !ds_ev_data.interface || !ds_ev_data.member)
+ // XXX handle individual errors
+ goto finish;
+
if (epc_object_new(&ds_ev_data.params) < 0)
goto finish;