mdp = (struct mdesc *) mtemp.base;
mdp->fd = fd;
if(!mdp->refcount){
- sem_init(&mdp->sem, 1, 1);
+ sem_init(&mdp->sem, 0, 1);
mdp->refcount++;
}
}
}
}
- /* If the user provided NULL BASEADDR then fail */
+ /* NULL is not a valid baseaddr as we cannot map anything there.
+ C'mon, user. Think! */
if (baseaddr == NULL)
return (NULL);
if (mdp->fd < 0){
mdp->flags |= MMALLOC_ANONYMOUS;
- sem_init(&mdp->sem, 0, 1);
- }else{
- sem_init(&mdp->sem, 1, 1);
}
+ sem_init(&mdp->sem, 0, 1);
/* If we have not been passed a valid open file descriptor for the file
to map to, then open /dev/zero and use that to map to. */
if ((mbase = mmorecore(mdp, sizeof(mtemp))) != NULL) {
memcpy(mbase, mdp, sizeof(mtemp));
} else {
- THROWF(system_error,0,"morecore failed to get some memory!");
+ fprintf(stderr, "morecore failed to get some more memory!\n");
+ abort();
}
/* Add the new heap to the linked list of heaps attached by mmalloc */