SICS-614 reallocate errMsg buffer each time it's used
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user