memory bug corrected
This commit is contained in:
@ -186,8 +186,6 @@
|
|||||||
|
|
||||||
iRet = self->pDriv->GetValue(self->pDriv,&fPos);
|
iRet = self->pDriv->GetValue(self->pDriv,&fPos);
|
||||||
|
|
||||||
printf("Return: %d Value: %f\n",iRet,fPos);
|
|
||||||
|
|
||||||
if(iRet == 0)
|
if(iRet == 0)
|
||||||
{
|
{
|
||||||
self->pDriv->GetError(self->pDriv,&iCode, pError,131);
|
self->pDriv->GetError(self->pDriv,&iCode, pError,131);
|
||||||
|
@ -36,7 +36,7 @@ int CocInitServer(int bufsize, int port) {
|
|||||||
if (bufsize==0) bufsize=1024;
|
if (bufsize==0) bufsize=1024;
|
||||||
ERR_P(buf=str_create_buf(bufsize, '\0'));
|
ERR_P(buf=str_create_buf(bufsize, '\0'));
|
||||||
ERR_P(bufo=str_create_buf(bufsize,'\0'));
|
ERR_P(bufo=str_create_buf(bufsize,'\0'));
|
||||||
cList=malloc(sizeof(*cList)); /* empty header */
|
NEW(cList); /* empty header */
|
||||||
|
|
||||||
/* first try to connect to an existing server */
|
/* first try to connect to an existing server */
|
||||||
|
|
||||||
@ -81,7 +81,7 @@ int CocHandle1Request(int tmo_msec, int fd) {
|
|||||||
cl->mode=0;
|
cl->mode=0;
|
||||||
cl->cmd[0]='\0';
|
cl->cmd[0]='\0';
|
||||||
cl->res[0]='\0';
|
cl->res[0]='\0';
|
||||||
cList=malloc(sizeof(*cList));
|
NEW(cList);
|
||||||
cList->next=cl;
|
cList->next=cl;
|
||||||
h=gethostbyaddr(&cadr.sin_addr, 4, AF_INET);
|
h=gethostbyaddr(&cadr.sin_addr, 4, AF_INET);
|
||||||
if (h==NULL) {
|
if (h==NULL) {
|
||||||
@ -99,7 +99,7 @@ int CocHandle1Request(int tmo_msec, int fd) {
|
|||||||
close(cl->fd);
|
close(cl->fd);
|
||||||
FD_CLR(cl->fd, &mask);
|
FD_CLR(cl->fd, &mask);
|
||||||
cl0->next=cl->next;
|
cl0->next=cl->next;
|
||||||
free(cl);
|
my_free(cl);
|
||||||
cl=cl0;
|
cl=cl0;
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
@ -233,9 +233,9 @@ void CocCloseServer() {
|
|||||||
close(cl->fd);
|
close(cl->fd);
|
||||||
cl0=cl;
|
cl0=cl;
|
||||||
cl=cl->next;
|
cl=cl->next;
|
||||||
free(cl0);
|
my_free(cl0);
|
||||||
}
|
}
|
||||||
free(cList);
|
my_free(cList);
|
||||||
close(mainFd);
|
close(mainFd);
|
||||||
str_free_buf(buf); str_free_buf(bufo);
|
str_free_buf(buf); str_free_buf(bufo);
|
||||||
logfileClose();
|
logfileClose();
|
||||||
|
@ -146,7 +146,7 @@ CocVar *CocDefVar(const char *name, void *var, int type, int *flag) {
|
|||||||
assert(varListHdl!=NULL);
|
assert(varListHdl!=NULL);
|
||||||
p=CocFindVar1(*varListHdl, name);
|
p=CocFindVar1(*varListHdl, name);
|
||||||
if (p==NULL) {
|
if (p==NULL) {
|
||||||
p=malloc(sizeof(*p));
|
p=my_malloc(sizeof(*p), name);
|
||||||
p->next=*varListHdl;
|
p->next=*varListHdl;
|
||||||
*varListHdl=p;
|
*varListHdl=p;
|
||||||
str_copy(p->name, name);
|
str_copy(p->name, name);
|
||||||
@ -238,7 +238,8 @@ void CocFreeVarList(CocVar **varList) {
|
|||||||
p=v;
|
p=v;
|
||||||
v=p->next;
|
v=p->next;
|
||||||
p->next=NULL;
|
p->next=NULL;
|
||||||
free(p);
|
printf("my_free %s\n", p->name);
|
||||||
|
my_free(p);
|
||||||
}
|
}
|
||||||
*varList=NULL;
|
*varList=NULL;
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,18 @@ char *ErrMessage=NULL;
|
|||||||
void (*outrtn)()=NULL;
|
void (*outrtn)()=NULL;
|
||||||
void *outarg;
|
void *outarg;
|
||||||
|
|
||||||
|
void *my_malloc(size_t size, const char *text) {
|
||||||
|
void *ptr;
|
||||||
|
ptr=calloc(1,size);
|
||||||
|
/* printf("new %s %X %d\n", text, ptr, size); */
|
||||||
|
return(ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void my_free(void *ptr) {
|
||||||
|
/* printf("my_free %X\n", ptr); */
|
||||||
|
free(ptr);
|
||||||
|
}
|
||||||
|
|
||||||
void ErrTxt(char *text, int systemError)
|
void ErrTxt(char *text, int systemError)
|
||||||
{
|
{
|
||||||
if (systemError) { sp=0; ErrCode=errno; ErrMessage=strerror(errno); }
|
if (systemError) { sp=0; ErrCode=errno; ErrMessage=strerror(errno); }
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
#ifndef _ERR_HANDLING_H_
|
#ifndef _ERR_HANDLING_H_
|
||||||
#define _ERR_HANDLING_H_
|
#define _ERR_HANDLING_H_
|
||||||
|
|
||||||
|
#ifdef FORTIFY
|
||||||
|
#include "fortify.h"
|
||||||
|
#endif
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <sys/errno.h>
|
#include <sys/errno.h>
|
||||||
|
|
||||||
@ -71,6 +74,8 @@ Global Variables (read only)
|
|||||||
#define ERR_MSG(R) { ErrMsg(R); goto OnError; }
|
#define ERR_MSG(R) { ErrMsg(R); goto OnError; }
|
||||||
#define ERR_COD(R) { ErrCod(R); goto OnError; }
|
#define ERR_COD(R) { ErrCod(R); goto OnError; }
|
||||||
|
|
||||||
|
#define NEW(PTR) ERR_SP(PTR=my_malloc(sizeof(*PTR),#PTR))
|
||||||
|
|
||||||
void ErrTxt(char *text, int systemError);
|
void ErrTxt(char *text, int systemError);
|
||||||
void ErrMsg(char *msg);
|
void ErrMsg(char *msg);
|
||||||
void ErrCod(int code);
|
void ErrCod(int code);
|
||||||
@ -79,6 +84,8 @@ void ERR_EXIT(char *text);
|
|||||||
void ErrLog(char *text);
|
void ErrLog(char *text);
|
||||||
void ErrSetOutRtn(void (*rtn)(), void *arg);
|
void ErrSetOutRtn(void (*rtn)(), void *arg);
|
||||||
void ErrSetOutFile(FILE *file);
|
void ErrSetOutFile(FILE *file);
|
||||||
|
void *my_malloc(size_t size, const char *text);
|
||||||
|
void my_free(void *ptr);
|
||||||
|
|
||||||
extern int ErrCode;
|
extern int ErrCode;
|
||||||
extern char *ErrMessage;
|
extern char *ErrMessage;
|
||||||
|
@ -158,8 +158,8 @@ void str_put_start(Str_Buf *buf)
|
|||||||
Str_Buf *str_create_buf(size_t size, char separator)
|
Str_Buf *str_create_buf(size_t size, char separator)
|
||||||
{ Str_Buf *buf;
|
{ Str_Buf *buf;
|
||||||
|
|
||||||
ERR_P(buf=malloc(sizeof(*buf)));
|
NEW(buf);
|
||||||
ERR_P(buf->buf=malloc(size));
|
ERR_P(buf->buf=my_malloc(size, "buf"));
|
||||||
buf->dsize=size;
|
buf->dsize=size;
|
||||||
buf->sep=separator;
|
buf->sep=separator;
|
||||||
buf->wrpos=0;
|
buf->wrpos=0;
|
||||||
@ -183,6 +183,6 @@ void str_link_buf(Str_Buf *buf, char *str, int size, char separator) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void str_free_buf(Str_Buf *buf)
|
void str_free_buf(Str_Buf *buf)
|
||||||
{ free(buf->buf);
|
{ my_free(buf->buf);
|
||||||
free(buf);
|
my_free(buf);
|
||||||
}
|
}
|
||||||
|
@ -113,7 +113,7 @@ char *str_read_file(char *file) {
|
|||||||
i=stat(file, &statbuf);
|
i=stat(file, &statbuf);
|
||||||
if (i<0) ERR_MSG("file not found");
|
if (i<0) ERR_MSG("file not found");
|
||||||
size=statbuf.st_size+4;
|
size=statbuf.st_size+4;
|
||||||
ERR_SP(str=malloc(size));
|
ERR_SP(str=my_malloc(size, file));
|
||||||
e=&str[size-1];
|
e=&str[size-1];
|
||||||
ERR_SP(fil=fopen(file, "r"));
|
ERR_SP(fil=fopen(file, "r"));
|
||||||
s=str;
|
s=str;
|
||||||
|
13
tecs/tecs.c
13
tecs/tecs.c
@ -161,7 +161,7 @@ int instCurve(char *nam, char *channel) {
|
|||||||
str_append(buf, " ");
|
str_append(buf, " ");
|
||||||
str_upcase(buf, buf);
|
str_upcase(buf, buf);
|
||||||
|
|
||||||
if (cache==NULL) { cache=malloc(1); *cache='\0'; } /* create empty cache if undefined */
|
if (cache==NULL) { ERR_SP(cache=my_malloc(1,"one")); *cache='\0'; } /* create empty cache if undefined */
|
||||||
start=strchr(cache, '\n'); /* skip device names */
|
start=strchr(cache, '\n'); /* skip device names */
|
||||||
if (start==NULL) { start=cache; } else { start++; }
|
if (start==NULL) { start=cache; } else { start++; }
|
||||||
entry=strstr(start, buf);
|
entry=strstr(start, buf);
|
||||||
@ -251,7 +251,7 @@ int instCurve(char *nam, char *channel) {
|
|||||||
logfileOut(LOG_MAIN, "curve selected on channel %s\n", chan);
|
logfileOut(LOG_MAIN, "curve selected on channel %s\n", chan);
|
||||||
saveTime=tim+30;
|
saveTime=tim+30;
|
||||||
}
|
}
|
||||||
free(crv); crv=NULL;
|
my_free(crv); crv=NULL;
|
||||||
|
|
||||||
if (num<=20) return(0); /* standard curve, do not touch cache */
|
if (num<=20) return(0); /* standard curve, do not touch cache */
|
||||||
|
|
||||||
@ -276,15 +276,16 @@ int instCurve(char *nam, char *channel) {
|
|||||||
ERR_SI(fputs("\n", fil));
|
ERR_SI(fputs("\n", fil));
|
||||||
ERR_SI(fputs(e, fil));
|
ERR_SI(fputs(e, fil));
|
||||||
}
|
}
|
||||||
|
ERR_SI(fputc('\0', fil));
|
||||||
ERR_SI(fclose(fil));
|
ERR_SI(fclose(fil));
|
||||||
fil=NULL;
|
fil=NULL;
|
||||||
free(cache);
|
my_free(cache);
|
||||||
/* re-read it */
|
/* re-read it */
|
||||||
ERR_P(cache=str_read_file(nbuf));
|
ERR_P(cache=str_read_file(nbuf));
|
||||||
return(0);
|
return(0);
|
||||||
|
|
||||||
OnError:
|
OnError:
|
||||||
if (crv!=NULL) free(crv);
|
if (crv!=NULL) my_free(crv);
|
||||||
if (fil!=NULL) fclose(fil);
|
if (fil!=NULL) fclose(fil);
|
||||||
return(retstat);
|
return(retstat);
|
||||||
}
|
}
|
||||||
@ -303,7 +304,7 @@ int configInput() {
|
|||||||
sprintf(buf, "%+d ", testpoint->code);
|
sprintf(buf, "%+d ", testpoint->code);
|
||||||
if (testpoint->code==0) return(0);
|
if (testpoint->code==0) return(0);
|
||||||
}
|
}
|
||||||
if (table!=NULL && tim>tableTime+60) { free(table); table=NULL; }; /* clear old table */
|
if (table!=NULL && tim>tableTime+60) { my_free(table); table=NULL; }; /* clear old table */
|
||||||
if (table==NULL) { /* read table */
|
if (table==NULL) { /* read table */
|
||||||
str_copy(nbuf, binDir);
|
str_copy(nbuf, binDir);
|
||||||
str_append(nbuf, TABLE_FILE);
|
str_append(nbuf, TABLE_FILE);
|
||||||
@ -520,7 +521,7 @@ int PeriodicTask() {
|
|||||||
if (samp.manual || samp.code!=0) { samp.dirty=1; }
|
if (samp.manual || samp.code!=0) { samp.dirty=1; }
|
||||||
ERR_P(LscCmd(ser, "RANGE:0")); /* switch off heater */
|
ERR_P(LscCmd(ser, "RANGE:0")); /* switch off heater */
|
||||||
/* reload curve cache: */
|
/* reload curve cache: */
|
||||||
if (cache!=NULL) free(cache);
|
if (cache!=NULL) my_free(cache);
|
||||||
sprintf(lbuf, "lsc.%d", serialNo);
|
sprintf(lbuf, "lsc.%d", serialNo);
|
||||||
str_copy(buf, logDir);
|
str_copy(buf, logDir);
|
||||||
str_append(buf, lbuf);
|
str_append(buf, lbuf);
|
||||||
|
@ -11,7 +11,7 @@ static float tempX, tempP, tempC;
|
|||||||
pTecsClient TeccInit(char *startcmd, int port) {
|
pTecsClient TeccInit(char *startcmd, int port) {
|
||||||
CocConn *conn;
|
CocConn *conn;
|
||||||
|
|
||||||
ERR_SP(conn=(CocConn *)malloc(sizeof(*conn)));
|
ERR_SP(conn=(CocConn *)my_malloc(sizeof(*conn),"conn"));
|
||||||
ERR_I(CocInitClient(conn, "", port, "#rwacs", 0, startcmd));
|
ERR_I(CocInitClient(conn, "", port, "#rwacs", 0, startcmd));
|
||||||
CocDefFlt(tempC, CocRD);
|
CocDefFlt(tempC, CocRD);
|
||||||
CocDefFlt(tempP, CocRD);
|
CocDefFlt(tempP, CocRD);
|
||||||
@ -135,7 +135,7 @@ int TeccQuitServer(pTecsClient conn) {
|
|||||||
void TeccClose(pTecsClient conn) {
|
void TeccClose(pTecsClient conn) {
|
||||||
if (conn!=NULL) {
|
if (conn!=NULL) {
|
||||||
CocCloseClient(conn);
|
CocCloseClient(conn);
|
||||||
free(conn);
|
my_free(conn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ SerChannel *SerOpen(const char *host, int msecTmo, void (*idleHdl)(int,int)) {
|
|||||||
int port, chan;
|
int port, chan;
|
||||||
|
|
||||||
idleHandler=idleHdl;
|
idleHandler=idleHdl;
|
||||||
ser=calloc(1, sizeof(*ser));
|
NEW(ser);
|
||||||
str_copy(hbuf, host);
|
str_copy(hbuf, host);
|
||||||
p=str_split(ser->asyn_info.host, hbuf, ':');
|
p=str_split(ser->asyn_info.host, hbuf, ':');
|
||||||
port=4000;
|
port=4000;
|
||||||
|
@ -152,8 +152,7 @@
|
|||||||
if (now!=lastGet) { /* TecsGet was not yet called within this second */
|
if (now!=lastGet) { /* TecsGet was not yet called within this second */
|
||||||
lastGet=now;
|
lastGet=now;
|
||||||
} else {
|
} else {
|
||||||
CocDelay(500); /* wait 0.5 sec. (seems that SICS has nothing else to do then reading temperatures) */
|
CocDelay(200); /* wait 0.2 sec. (seems that SICS has nothing else to do then reading temperatures) */
|
||||||
printf("usleep %d\n", now);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* get temperature */
|
/* get temperature */
|
||||||
|
@ -22,4 +22,6 @@
|
|||||||
int TecsWrapper(SConnection *pCon, SicsInterp *pSics, void *pData,
|
int TecsWrapper(SConnection *pCon, SicsInterp *pSics, void *pData,
|
||||||
int argc, char *argv[]);
|
int argc, char *argv[]);
|
||||||
|
|
||||||
|
int TecsError(pEVDriver self, int *iCode, char *error, int iErrLen);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user