ref: e43e3872b43d9c1b49e9e5c015b32258c3735ad8
dir: /src/libmach/newobj.c/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <scc/mach.h>
#include "libmach.h"
Obj *
newobj(int type)
{
Obj *obj;
int fmt;
fmt = FORMAT(type);
if (fmt >= NFORMATS) {
errno = ERANGE;
return NULL;
}
if ((obj = malloc(sizeof(*obj))) == NULL)
return NULL;
obj->type = type;
obj->ops = objops[fmt];
obj->next = NULL;
if ((*obj->ops->new)(obj) < 0) {
free(obj);
return NULL;
}
return obj;
}