From 54ce8fbdbede9779c0b30cfd38b14903cd63a421 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Tue, 13 Nov 2007 23:27:35 +0000 Subject: [PATCH] Fixed Mantis #290. --- src/libCom/misc/cantProceed.c | 38 ++++++++++++++++------------------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/src/libCom/misc/cantProceed.c b/src/libCom/misc/cantProceed.c index e95130753..ebb8a44ed 100644 --- a/src/libCom/misc/cantProceed.c +++ b/src/libCom/misc/cantProceed.c @@ -23,17 +23,15 @@ epicsShareFunc void * callocMustSucceed(size_t count, size_t size, const char *msg) { void * mem = NULL; - if (count == 0 || size == 0) - cantProceed("%s: callocMustSucceed(%lu, %lu) - bad args\n", - msg, (unsigned long)count, (unsigned long)size); - - while ((mem = calloc(count, size)) == NULL) { - errlogPrintf("%s: callocMustSucceed(%lu, %lu) - calloc failed\n", - msg, (unsigned long)count, (unsigned long)size); - errlogPrintf("Thread %s (%p) suspending.\n", - epicsThreadGetNameSelf(), epicsThreadGetIdSelf()); - errlogFlush(); - epicsThreadSuspendSelf(); + if (count > 0 && size > 0) { + while ((mem = calloc(count, size)) == NULL) { + errlogPrintf("%s: callocMustSucceed(%lu, %lu) - calloc failed\n", + msg, (unsigned long)count, (unsigned long)size); + errlogPrintf("Thread %s (%p) suspending.\n", + epicsThreadGetNameSelf(), epicsThreadGetIdSelf()); + errlogFlush(); + epicsThreadSuspendSelf(); + } } return mem; } @@ -41,17 +39,15 @@ epicsShareFunc void * callocMustSucceed(size_t count, size_t size, const char *m epicsShareFunc void * mallocMustSucceed(size_t size, const char *msg) { void * mem = NULL; - if (size == 0) - cantProceed("%s: mallocMustSucceed(%lu) - bad arg\n", + if (size > 0) { + while ((mem = malloc(size)) == NULL) { + errlogPrintf("%s: mallocMustSucceed(%lu) - malloc failed\n", msg, (unsigned long)size); - - while ((mem = malloc(size)) == NULL) { - errlogPrintf("%s: mallocMustSucceed(%lu) - malloc failed\n", - msg, (unsigned long)size); - errlogPrintf("Thread %s (%p) suspending.\n", - epicsThreadGetNameSelf(), epicsThreadGetIdSelf()); - errlogFlush(); - epicsThreadSuspendSelf(); + errlogPrintf("Thread %s (%p) suspending.\n", + epicsThreadGetNameSelf(), epicsThreadGetIdSelf()); + errlogFlush(); + epicsThreadSuspendSelf(); + } } return mem; }