diff --git a/src/libCom/osi/os/RTEMS/osdMessageQueue.c b/src/libCom/osi/os/RTEMS/osdMessageQueue.c index 2707df1f4..05c930d45 100644 --- a/src/libCom/osi/os/RTEMS/osdMessageQueue.c +++ b/src/libCom/osi/os/RTEMS/osdMessageQueue.c @@ -27,7 +27,6 @@ #include #include #include -#include #include "epicsMessageQueue.h" #include "errlog.h" @@ -35,11 +34,14 @@ epicsShareFunc epicsMessageQueueId epicsShareAPI epicsMessageQueueCreate(unsigned int capacity, unsigned int maximumMessageSize) { rtems_status_code sc; - epicsMessageQueueId id = (epicsMessageQueueId)callocMustSucceed(1, sizeof(*id), "epicsMessageQueueCreate"); + epicsMessageQueueId id = calloc(1, sizeof(*id)); rtems_interrupt_level level; static char c1 = 'a'; static char c2 = 'a'; static char c3 = 'a'; + + if(!id) + return NULL; sc = rtems_message_queue_create (rtems_build_name ('Q', c3, c2, c1), capacity, @@ -47,6 +49,7 @@ epicsMessageQueueCreate(unsigned int capacity, unsigned int maximumMessageSize) RTEMS_FIFO|RTEMS_LOCAL, &id->id); if (sc != RTEMS_SUCCESSFUL) { + free(id); errlogPrintf ("Can't create message queue: %s\n", rtems_status_text (sc)); return NULL; }