diff --git a/src/create.c b/src/create.c index 0a01b8c..46866bc 100644 --- a/src/create.c +++ b/src/create.c @@ -42,14 +42,17 @@ var makeInstance(typeinfo_t* type, ...) obj = objAlloc(type, type->dataSize(ap1)); va_end(ap1); - if (obj != NULL) { - rc = type->init(obj, ap); + if (obj == NULL) { + va_end(ap); + return NULL; } + + rc = type->init(obj, ap); va_end(ap); if (rc < 0) { - destroy(obj); + destroy(RTTI_OBJ_TO_DATA(void, obj)); return NULL; }