Memory cleanup

r1980 | dcl | 2007-05-24 14:49:02 +1000 (Thu, 24 May 2007) | 2 lines
This commit is contained in:
Douglas Clowes
2007-05-24 14:49:02 +10:00
parent 8678bcb102
commit 785fe7bb96
2 changed files with 18 additions and 1 deletions

View File

@@ -2908,6 +2908,7 @@ MotorDriver *CreateDMC2280(SConnection *pCon, char *motor, char *params) {
pPtr, motor); pPtr, motor);
SCWrite(pCon,pError,eError); SCWrite(pCon,pError,eError);
KillDMC2280(pNew); KillDMC2280(pNew);
free(pNew);
return NULL; return NULL;
} }
AsyncUnitSetNotify(pNew->asyncUnit, pNew, DMC_Notify); 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); snprintf(pError, ERRLEN, "\tError occurred when creating DMC2280 motor '%s'", motor);
SCWrite(pCon,pError,eError); SCWrite(pCon,pError,eError);
KillDMC2280(pNew); KillDMC2280(pNew);
free(pNew);
return NULL; return NULL;
} }
/* AsyncUnit */ /* AsyncUnit */
@@ -2927,6 +2929,7 @@ MotorDriver *CreateDMC2280(SConnection *pCon, char *motor, char *params) {
host, pPtr, motor); host, pPtr, motor);
SCWrite(pCon,pError,eError); SCWrite(pCon,pError,eError);
KillDMC2280(pNew); KillDMC2280(pNew);
free(pNew);
return NULL; return NULL;
} }
AsyncUnitSetNotify(pNew->asyncUnit, pNew, DMC_Notify); 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); snprintf(pError, ERRLEN, "\tError occurred when creating DMC2280 motor '%s'", motor);
SCWrite(pCon,pError,eError); SCWrite(pCon,pError,eError);
KillDMC2280(pNew); KillDMC2280(pNew);
free(pNew);
return NULL; return NULL;
} }
@@ -2943,6 +2947,7 @@ MotorDriver *CreateDMC2280(SConnection *pCon, char *motor, char *params) {
(void) SCWrite(pCon,"ERROR: no memory to allocate motor driver", (void) SCWrite(pCon,"ERROR: no memory to allocate motor driver",
eError); eError);
KillDMC2280(pNew); KillDMC2280(pNew);
free(pNew);
return NULL; return NULL;
} }
@@ -2991,44 +2996,52 @@ MotorDriver *CreateDMC2280(SConnection *pCon, char *motor, char *params) {
} }
if ((pPtr=getParam(pCon, interp, params,HARDLOWERLIM,_REQUIRED)) == NULL) { if ((pPtr=getParam(pCon, interp, params,HARDLOWERLIM,_REQUIRED)) == NULL) {
KillDMC2280(pNew); KillDMC2280(pNew);
free(pNew);
return NULL; return NULL;
} }
sscanf(pPtr,"%f",&(pNew->fLower)); sscanf(pPtr,"%f",&(pNew->fLower));
if ((pPtr=getParam(pCon, interp, params,HARDUPPERLIM,_REQUIRED)) == NULL) { if ((pPtr=getParam(pCon, interp, params,HARDUPPERLIM,_REQUIRED)) == NULL) {
KillDMC2280(pNew); KillDMC2280(pNew);
free(pNew);
return NULL; return NULL;
} }
sscanf(pPtr,"%f",&(pNew->fUpper)); sscanf(pPtr,"%f",&(pNew->fUpper));
if ((pPtr=getParam(pCon, interp, params,UNITS,_REQUIRED)) == NULL) { if ((pPtr=getParam(pCon, interp, params,UNITS,_REQUIRED)) == NULL) {
KillDMC2280(pNew); KillDMC2280(pNew);
free(pNew);
return NULL; return NULL;
} }
sscanf(pPtr,"%s",pNew->units); sscanf(pPtr,"%s",pNew->units);
if ((pPtr=getParam(pCon, interp, params,MAXSPEED,_REQUIRED)) == NULL) { if ((pPtr=getParam(pCon, interp, params,MAXSPEED,_REQUIRED)) == NULL) {
KillDMC2280(pNew); KillDMC2280(pNew);
free(pNew);
return NULL; return NULL;
} }
sscanf(pPtr,"%f",&(pNew->speed)); sscanf(pPtr,"%f",&(pNew->speed));
pNew->maxSpeed = pNew->speed; pNew->maxSpeed = pNew->speed;
if ((pPtr=getParam(pCon, interp, params,MAXACCEL,_REQUIRED)) == NULL) { if ((pPtr=getParam(pCon, interp, params,MAXACCEL,_REQUIRED)) == NULL) {
KillDMC2280(pNew); KillDMC2280(pNew);
free(pNew);
return NULL; return NULL;
} }
sscanf(pPtr,"%f",&(pNew->accel)); sscanf(pPtr,"%f",&(pNew->accel));
pNew->maxAccel = pNew->accel; pNew->maxAccel = pNew->accel;
if ((pPtr=getParam(pCon, interp, params,MAXDECEL,_REQUIRED)) == NULL) { if ((pPtr=getParam(pCon, interp, params,MAXDECEL,_REQUIRED)) == NULL) {
KillDMC2280(pNew); KillDMC2280(pNew);
free(pNew);
return NULL; return NULL;
} }
sscanf(pPtr,"%f",&(pNew->decel)); sscanf(pPtr,"%f",&(pNew->decel));
pNew->maxDecel = pNew->decel; pNew->maxDecel = pNew->decel;
if ((pPtr=getParam(pCon, interp, params,"axis",_REQUIRED)) == NULL) { if ((pPtr=getParam(pCon, interp, params,"axis",_REQUIRED)) == NULL) {
KillDMC2280(pNew); KillDMC2280(pNew);
free(pNew);
return NULL; return NULL;
} }
sscanf(pPtr,"%c",&(pNew->axisLabel)); sscanf(pPtr,"%c",&(pNew->axisLabel));
if ((pPtr=getParam(pCon, interp, params,"stepsperx",_REQUIRED)) == NULL) { if ((pPtr=getParam(pCon, interp, params,"stepsperx",_REQUIRED)) == NULL) {
KillDMC2280(pNew); KillDMC2280(pNew);
free(pNew);
return NULL; return NULL;
} }
sscanf(pPtr,"%f",&(pNew->stepsPerX)); sscanf(pPtr,"%f",&(pNew->stepsPerX));
@@ -3142,7 +3155,7 @@ int DMC2280Action(SConnection *pCon, SicsInterp *pSics, void *pData,
int i, j; int i, j;
cmd[0] = '\0'; cmd[0] = '\0';
for (i = 2; i < argc; ++i) { for (i = 2; i < argc; ++i) {
j = snprintf(&cmd[idx], CMDLEN - j, "%s%s", j = snprintf(&cmd[idx], CMDLEN - idx, "%s%s",
(i > 2) ? " " : "", (i > 2) ? " " : "",
argv[i]); argv[i]);
if (j < 0) if (j < 0)

View File

@@ -445,6 +445,10 @@ static void PLC_Kill(void* pData)
pSafetyPLCController self = (pSafetyPLCController) pData; pSafetyPLCController self = (pSafetyPLCController) pData;
if (self->nw_tmr) if (self->nw_tmr)
NetWatchRemoveTimer(self->nw_tmr); NetWatchRemoveTimer(self->nw_tmr);
if (self->pDes) {
DeleteDescriptor(self->pDes);
self->pDes = NULL;
}
free(self); free(self);
return; return;
} }