assert(m);
assert(bus->rbuffer_size >= size);
- t = new0(sd_bus_message, 1);
- if (!t)
- return -ENOMEM;
-
if (bus->rbuffer_size > size) {
b = memdup((const uint8_t*) bus->rbuffer + size, bus->rbuffer_size - size);
if (!b) {
}
}
- t->n_ref = 1;
-
- t->header = bus->rbuffer;
- t->free_header = true;
-
- t->fields = (uint8_t*) bus->rbuffer + sizeof(struct bus_header);
- t->body = (uint8_t*) bus->rbuffer + sizeof(struct bus_header) + ALIGN_TO(BUS_MESSAGE_BODY_SIZE(t), 8);
+ r = bus_message_from_malloc(bus->rbuffer, size, &t);
+ if (r < 0) {
+ free(b);
+ return r;
+ }
bus->rbuffer = b;
bus->rbuffer_size -= size;
return -EINVAL;
if (!m->header->type != SD_BUS_MESSAGE_TYPE_METHOD_CALL)
return -EINVAL;
- if (sd_bus_error_is_set(error))
+ if (sd_bus_error_is_dirty(error))
return -EINVAL;
r = sd_bus_send(bus, m, &serial);