valgrind leak from tasks not deleting funcs

This commit is contained in:
maliakal_d 2018-04-13 09:35:18 +02:00
parent c3a9d3c342
commit 70e193b0fd
3 changed files with 32 additions and 6 deletions

View File

@ -270,7 +270,10 @@ slsDetector::~slsDetector(){
else else
printf("Shared memory %d detached\n", shmId); printf("Shared memory %d detached\n", shmId);
#endif #endif
delete thisReceiver; if(controlSocket) delete controlSocket;
if(stopSocket) delete stopSocket;
if(dataSocket) delete dataSocket;
if(thisReceiver) delete thisReceiver;
}; };
slsDetector::slsDetector(int pos, char *name, int id, int cport,multiSlsDetector *p) : slsDetectorUtils(), slsDetector::slsDetector(int pos, char *name, int id, int cport,multiSlsDetector *p) : slsDetectorUtils(),

View File

@ -15,9 +15,7 @@ receiverInterface::receiverInterface(MySocketTCP *socket):dataSocket(socket){}
receiverInterface::~receiverInterface(){ receiverInterface::~receiverInterface(){}
delete dataSocket;
}

View File

@ -110,7 +110,7 @@ class SuperTask: public virtual slsDetectorDefs {
public: public:
SuperTask(): SuperTask():
m1(0),m2(0),m3(0),m4(0),m5(0),m6(0),m7(0),m8(0),m9(0),m10(0),m11(0),m12(0),m13(0),m14(0),m15(0),m16(0),m17(0),m18(0){}; m1(0),m2(0),m3(0),m4(0),m5(0),m6(0),m7(0),m8(0),m9(0),m10(0),m11(0),m12(0),m13(0),m14(0),m15(0),m16(0),m17(0),m18(0){};
~SuperTask(){}; virtual ~SuperTask(){};
protected: protected:
/** Function signature defined /** Function signature defined
* First argument is Return type, the remaining are arguments * First argument is Return type, the remaining are arguments
@ -159,7 +159,32 @@ public:
Task(func4_t <int, int,int,detectorSettings,int>* t): SuperTask(),fnum(17){m17 = t;}; Task(func4_t <int, int,int,detectorSettings,int>* t): SuperTask(),fnum(17){m17 = t;};
Task(func4_t <dacs_t, dacs_t,dacIndex,int,int>* t): SuperTask(),fnum(18){m18 = t;}; Task(func4_t <dacs_t, dacs_t,dacIndex,int,int>* t): SuperTask(),fnum(18){m18 = t;};
~Task(){} virtual ~Task(){
switch(fnum) {
case 1: delete m1; break;
case 2: delete m2; break;
case 3: delete m3; break;
case 4: delete m4; break;
case 5: delete m5; break;
case 6: delete m6; break;
case 7: delete m7; break;
case 8: delete m8; break;
case 9: delete m9; break;
case 10: delete m10; break;
case 11: delete m11; break;
case 12: delete m12; break;
case 13: delete m13; break;
case 14: delete m14; break;
case 15: delete m15; break;
case 16: delete m16; break;
case 17: delete m17; break;
case 18: delete m18; break;
default:
cprintf(RED, "Error: Task not defined. Abort!\n");
break;
}
};
void operator()(){ void operator()(){
switch(fnum) { switch(fnum) {