ref: bf2b631c10be44df6ca87c9b7e7fb279a9a4d4ec
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; }