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;
|
self = (pDMC2280Driv)pData;
|
||||||
assert(self != NULL);
|
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;
|
*iCode = self->errorCode;
|
||||||
switch(*iCode){
|
switch(*iCode){
|
||||||
case MOTCMDTMO:
|
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);
|
snprintf(error, (size_t)errLen, "Unknown Motor Error: %d", self->errorCode);
|
||||||
break;
|
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);
|
strncpy(self->errorMsg, error, (size_t)errLen);
|
||||||
|
self->errMsg[errLen] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
/** \brief Attempts to recover from an error. Implements the TryAndFixIt
|
/** \brief Attempts to recover from an error. Implements the TryAndFixIt
|
||||||
|
|||||||
Reference in New Issue
Block a user