X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Funit.c;fp=src%2Funit.c;h=fa3c2649b35b87cba48d1cf117021f0f7602fc34;hp=1fbfb1dea5fb7df643f04ed5d46b1abe1c171c77;hb=7d17cfbc46306a106dbda0f3e92fbc0792d1e9e9;hpb=1637a8be5570dff7ce402451240b28ddb54e5dca diff --git a/src/unit.c b/src/unit.c index 1fbfb1dea..fa3c2649b 100644 --- a/src/unit.c +++ b/src/unit.c @@ -57,15 +57,18 @@ const UnitVTable * const unit_vtable[_UNIT_TYPE_MAX] = { [UNIT_PATH] = &path_vtable }; -Unit *unit_new(Manager *m) { +Unit *unit_new(Manager *m, size_t size) { Unit *u; assert(m); + assert(size >= sizeof(Meta)); - if (!(u = new0(Unit, 1))) + u = malloc0(size); + if (!u) return NULL; - if (!(u->meta.names = set_new(string_hash_func, string_compare_func))) { + u->meta.names = set_new(string_hash_func, string_compare_func); + if (!u->meta.names) { free(u); return NULL; }