Better solution to zero-sized alloc requests.
This commit is contained in:
@@ -7,15 +7,12 @@
|
||||
* and higher are distributed subject to a Software License Agreement found
|
||||
* in file LICENSE that is included with this distribution.
|
||||
\*************************************************************************/
|
||||
/* callocMustSucceed.c */
|
||||
/* $Id$ */
|
||||
|
||||
/* Author: Marty Kraimer Date: 04JAN99 */
|
||||
|
||||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#define epicsExportSharedSymbols
|
||||
#include "errlog.h"
|
||||
@@ -24,31 +21,38 @@
|
||||
|
||||
epicsShareFunc void * callocMustSucceed(size_t count, size_t size, const char *errorMessage)
|
||||
{
|
||||
void *mem = calloc(count,size);
|
||||
if(mem==0 && count!=0 && size!=0) {
|
||||
errlogPrintf("%s callocMustSucceed failed count %lu size %lu\n",
|
||||
errorMessage,(unsigned long)count,(unsigned long)size);
|
||||
void * mem = NULL;
|
||||
if (count != 0 && size != 0)
|
||||
mem = calloc(count, size);
|
||||
if (mem == NULL) {
|
||||
errlogPrintf("%s: callocMustSucceed(count=%lu, size=%lu) failed\n",
|
||||
errorMessage, (unsigned long)count, (unsigned long)size);
|
||||
cantProceed(0);
|
||||
}
|
||||
return(mem);
|
||||
return mem;
|
||||
}
|
||||
|
||||
epicsShareFunc void * mallocMustSucceed(size_t size, const char *errorMessage)
|
||||
{
|
||||
void *mem = malloc(size);
|
||||
if(mem==0 && size!=0) {
|
||||
errlogPrintf("%s mallocMustSucceed failed size %lu\n",
|
||||
errorMessage,(unsigned long)size);
|
||||
void * mem = NULL;
|
||||
if (size != 0)
|
||||
mem = malloc(size);
|
||||
if (mem == NULL) {
|
||||
errlogPrintf("%s: mallocMustSucceed(size=%lu) failed\n",
|
||||
errorMessage, (unsigned long)size);
|
||||
cantProceed(0);
|
||||
}
|
||||
return(mem);
|
||||
return mem;
|
||||
}
|
||||
|
||||
epicsShareFunc void cantProceed(const char *errorMessage)
|
||||
{
|
||||
if(errorMessage) errlogPrintf("fatal error: %s\n",errorMessage);
|
||||
else errlogPrintf("fatal error\n");
|
||||
if (errorMessage)
|
||||
errlogPrintf("fatal error: %s\n",errorMessage);
|
||||
else
|
||||
errlogPrintf("fatal error, task suspended\n");
|
||||
errlogFlush();
|
||||
epicsThreadSleep(1.0);
|
||||
epicsThreadSuspendSelf();
|
||||
while (1)
|
||||
epicsThreadSuspendSelf();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user