From 785fe7bb96b6bdd149046e2e3ce8f580ac5e9319 Mon Sep 17 00:00:00 2001 From: Douglas Clowes Date: Thu, 24 May 2007 14:49:02 +1000 Subject: [PATCH] Memory cleanup r1980 | dcl | 2007-05-24 14:49:02 +1000 (Thu, 24 May 2007) | 2 lines --- site_ansto/motor_dmc2280.c | 15 ++++++++++++++- site_ansto/safetyplc.c | 4 ++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/site_ansto/motor_dmc2280.c b/site_ansto/motor_dmc2280.c index acfee9e1..c7a84adf 100644 --- a/site_ansto/motor_dmc2280.c +++ b/site_ansto/motor_dmc2280.c @@ -2908,6 +2908,7 @@ MotorDriver *CreateDMC2280(SConnection *pCon, char *motor, char *params) { pPtr, motor); SCWrite(pCon,pError,eError); KillDMC2280(pNew); + free(pNew); return NULL; } AsyncUnitSetNotify(pNew->asyncUnit, pNew, DMC_Notify); @@ -2918,6 +2919,7 @@ MotorDriver *CreateDMC2280(SConnection *pCon, char *motor, char *params) { snprintf(pError, ERRLEN, "\tError occurred when creating DMC2280 motor '%s'", motor); SCWrite(pCon,pError,eError); KillDMC2280(pNew); + free(pNew); return NULL; } /* AsyncUnit */ @@ -2927,6 +2929,7 @@ MotorDriver *CreateDMC2280(SConnection *pCon, char *motor, char *params) { host, pPtr, motor); SCWrite(pCon,pError,eError); KillDMC2280(pNew); + free(pNew); return NULL; } AsyncUnitSetNotify(pNew->asyncUnit, pNew, DMC_Notify); @@ -2935,6 +2938,7 @@ MotorDriver *CreateDMC2280(SConnection *pCon, char *motor, char *params) { snprintf(pError, ERRLEN, "\tError occurred when creating DMC2280 motor '%s'", motor); SCWrite(pCon,pError,eError); KillDMC2280(pNew); + free(pNew); return NULL; } @@ -2943,6 +2947,7 @@ MotorDriver *CreateDMC2280(SConnection *pCon, char *motor, char *params) { (void) SCWrite(pCon,"ERROR: no memory to allocate motor driver", eError); KillDMC2280(pNew); + free(pNew); return NULL; } @@ -2991,44 +2996,52 @@ MotorDriver *CreateDMC2280(SConnection *pCon, char *motor, char *params) { } if ((pPtr=getParam(pCon, interp, params,HARDLOWERLIM,_REQUIRED)) == NULL) { KillDMC2280(pNew); + free(pNew); return NULL; } sscanf(pPtr,"%f",&(pNew->fLower)); if ((pPtr=getParam(pCon, interp, params,HARDUPPERLIM,_REQUIRED)) == NULL) { KillDMC2280(pNew); + free(pNew); return NULL; } sscanf(pPtr,"%f",&(pNew->fUpper)); if ((pPtr=getParam(pCon, interp, params,UNITS,_REQUIRED)) == NULL) { KillDMC2280(pNew); + free(pNew); return NULL; } sscanf(pPtr,"%s",pNew->units); if ((pPtr=getParam(pCon, interp, params,MAXSPEED,_REQUIRED)) == NULL) { KillDMC2280(pNew); + free(pNew); return NULL; } sscanf(pPtr,"%f",&(pNew->speed)); pNew->maxSpeed = pNew->speed; if ((pPtr=getParam(pCon, interp, params,MAXACCEL,_REQUIRED)) == NULL) { KillDMC2280(pNew); + free(pNew); return NULL; } sscanf(pPtr,"%f",&(pNew->accel)); pNew->maxAccel = pNew->accel; if ((pPtr=getParam(pCon, interp, params,MAXDECEL,_REQUIRED)) == NULL) { KillDMC2280(pNew); + free(pNew); return NULL; } sscanf(pPtr,"%f",&(pNew->decel)); pNew->maxDecel = pNew->decel; if ((pPtr=getParam(pCon, interp, params,"axis",_REQUIRED)) == NULL) { KillDMC2280(pNew); + free(pNew); return NULL; } sscanf(pPtr,"%c",&(pNew->axisLabel)); if ((pPtr=getParam(pCon, interp, params,"stepsperx",_REQUIRED)) == NULL) { KillDMC2280(pNew); + free(pNew); return NULL; } sscanf(pPtr,"%f",&(pNew->stepsPerX)); @@ -3142,7 +3155,7 @@ int DMC2280Action(SConnection *pCon, SicsInterp *pSics, void *pData, int i, j; cmd[0] = '\0'; for (i = 2; i < argc; ++i) { - j = snprintf(&cmd[idx], CMDLEN - j, "%s%s", + j = snprintf(&cmd[idx], CMDLEN - idx, "%s%s", (i > 2) ? " " : "", argv[i]); if (j < 0) diff --git a/site_ansto/safetyplc.c b/site_ansto/safetyplc.c index ca9c9199..4db7d9b9 100644 --- a/site_ansto/safetyplc.c +++ b/site_ansto/safetyplc.c @@ -445,6 +445,10 @@ static void PLC_Kill(void* pData) pSafetyPLCController self = (pSafetyPLCController) pData; if (self->nw_tmr) NetWatchRemoveTimer(self->nw_tmr); + if (self->pDes) { + DeleteDescriptor(self->pDes); + self->pDes = NULL; + } free(self); return; }