SICS-614 reallocate errMsg buffer each time it's used

This commit is contained in:
Douglas Clowes
2013-05-28 16:19:52 +10:00
parent 7036164640
commit 4a363d0e95

View File

@@ -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