diff --git a/mod/box/box_lua.m b/mod/box/box_lua.m index 6ad5bfe2707641dcf9845114aa53765b3911b950..f558a470ca80b7923113abdeaeb386b4e9439227 100644 --- a/mod/box/box_lua.m +++ b/mod/box/box_lua.m @@ -656,7 +656,7 @@ static const struct luaL_reg lbox_iterator_meta[] = { + (PortLua *) alloc { size_t sz = class_getInstanceSize(self); - id new = palloc(fiber->gc_pool, sz); + id new = palloca(fiber->gc_pool, sz, sizeof(void *)); object_setClass(new, self); return new; } diff --git a/mod/box/request.m b/mod/box/request.m index 8f2ccdb67e3d63c93ce25b93abe07dab6f224406..942fcf2a289a7b24409c8ab15454f794549637af 100644 --- a/mod/box/request.m +++ b/mod/box/request.m @@ -939,7 +939,7 @@ do_update_ops(struct update_cmd *cmd, struct tuple *new_tuple) + (Request *) alloc { size_t sz = class_getInstanceSize(self); - id new = palloc(fiber->gc_pool, sz); + id new = palloca(fiber->gc_pool, sz, sizeof(void *)); object_setClass(new, self); return new; } diff --git a/src/exception.m b/src/exception.m index 35f249b944c8ae6631143ed68eb4f56fdfaa5e9e..8a50bbde7a51087631a292b4483210b897282c50 100644 --- a/src/exception.m +++ b/src/exception.m @@ -42,7 +42,8 @@ if (e != nil && class_getInstanceSize(self) <= sz) { object_setClass(e, self); } else { - object_dispose(e); + if (e != nil) + object_dispose(e); e = class_createInstance(self, 0); sz = class_getInstanceSize(self); }