void ph_newheap(size_t nbytes) { unsigned newsize; Heap *h; h = (Heap *) malloc(sizeof(Heap)); if (!h) err_nomem(); newsize = (nbytes > 0xFF00) ? nbytes : 0xFF00; h->buf = (unsigned char *) malloc(newsize); if (!h->buf) { free(h); err_nomem(); } h->nleft = newsize; h->p = h->buf; h->prev = heap; heap = h; }
err_t herc_make(struct herc **h_res, int argc, char **argv) { err_t err; struct herc *h; *h_res = NULL; h = calloc(1, sizeof(struct herc)); if (h==NULL) { err = err_nomem(); } else if ( (err = parse_cdm_args(h, argc, argv)) ) { free(h); } else if ( (err = herc_make_default_rbe(&(h->rbe), h)) ) { free(h); } else { *h_res = h; } return err; }
/* * memory allocator for tokens */ static Token * _token_alloc() { Token *tp; char *blk; int i; if( !(blk = malloc(TOKEN_SIZE * TOK_BLOCK_SIZE)) ) { err_nomem("token_alloc"); } for( i = 0; i < TOK_BLOCK_SIZE; i++ ) { tp = (Token *) (blk + i * TOKEN_SIZE); tp->next = free_list; free_list = tp; } tp = free_list; free_list = free_list->next; return tp; }
object * newmappingobject() { register mappingobject *mp; if (dummy == NULL) { /* Auto-initialize dummy */ dummy = newstringobject("<dummy key>"); if (dummy == NULL) return NULL; } mp = NEWOBJ(mappingobject, &Mappingtype); if (mp == NULL) return NULL; mp->ma_size = primes[0]; mp->ma_table = (mappingentry *) calloc(sizeof(mappingentry), mp->ma_size); if (mp->ma_table == NULL) { DEL(mp); return err_nomem(); } mp->ma_fill = 0; mp->ma_used = 0; return (object *)mp; }