From 4a363d0e955ab1269a5cf309ef3885f10401caf2 Mon Sep 17 00:00:00 2001 From: Douglas Clowes Date: Tue, 28 May 2013 16:19:52 +1000 Subject: [PATCH] SICS-614 reallocate errMsg buffer each time it's used --- site_ansto/motor_dmc2280.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/site_ansto/motor_dmc2280.c b/site_ansto/motor_dmc2280.c index 383cfd7f..6bfca9cf 100644 --- a/site_ansto/motor_dmc2280.c +++ b/site_ansto/motor_dmc2280.c @@ -2953,14 +2953,6 @@ static void DMC2280Error(void *pData, int *iCode, char *error, int errLen){ self = (pDMC2280Driv)pData; assert(self != NULL); - /* Allocate errLen bytes for error messages */ - if (self->errorMsg == NULL) { - self->errorMsg = (char *) malloc(errLen); - if (self->errorMsg == NULL) { - *iCode = 0; - return; - } - } *iCode = self->errorCode; switch(*iCode){ case MOTCMDTMO: @@ -3037,7 +3029,16 @@ static void DMC2280Error(void *pData, int *iCode, char *error, int errLen){ snprintf(error, (size_t)errLen, "Unknown Motor Error: %d", self->errorCode); break; } + /* Allocate errLen bytes for error messages */ + if (self->errorMsg) + free(self->errorMsg); + self->errorMsg = (char *) malloc(errLen + 1); + if (self->errorMsg == NULL) { + *iCode = 0; + return; + } strncpy(self->errorMsg, error, (size_t)errLen); + self->errMsg[errLen] = '\0'; } /** \brief Attempts to recover from an error. Implements the TryAndFixIt