Fixed memory leak concerning library ecrt_master_deactivate().

This commit is contained in:
Florian Pose
2019-06-14 12:42:52 +02:00
parent d9e96f7112
commit f3b4d16aba
5 changed files with 25 additions and 17 deletions

View File

@@ -1,8 +1,6 @@
/*****************************************************************************
*
* $Id$
*
* Copyright (C) 2006-2012 Florian Pose, Ingenieurgemeinschaft IgH
* Copyright (C) 2006-2019 Florian Pose, Ingenieurgemeinschaft IgH
*
* This file is part of the IgH EtherCAT master userspace library.
*
@@ -69,6 +67,7 @@ void ec_master_clear_config(ec_master_t *master)
while (d) {
next_d = d->next;
ec_domain_clear(d);
free(d);
d = next_d;
}
master->first_domain = NULL;
@@ -77,9 +76,16 @@ void ec_master_clear_config(ec_master_t *master)
while (c) {
next_c = c->next;
ec_slave_config_clear(c);
free(c);
c = next_c;
}
master->first_config = NULL;
if (master->process_data) {
munmap(master->process_data, master->process_data_size);
master->process_data = NULL;
master->process_data_size = 0;
}
}
/****************************************************************************/
@@ -94,6 +100,7 @@ void ec_master_clear(ec_master_t *master)
#else
close(master->fd);
#endif
master->fd = -1;
}
}
@@ -409,7 +416,7 @@ int ecrt_master_sdo_download(ec_master_t *master, uint16_t slave_position,
*abort_code = download.abort_code;
}
fprintf(stderr, "Failed to execute SDO download: %s\n",
strerror(EC_IOCTL_ERRNO(ret)));
strerror(EC_IOCTL_ERRNO(ret)));
return -EC_IOCTL_ERRNO(ret);
}
@@ -438,7 +445,7 @@ int ecrt_master_sdo_download_complete(ec_master_t *master,
*abort_code = download.abort_code;
}
fprintf(stderr, "Failed to execute SDO download: %s\n",
strerror(EC_IOCTL_ERRNO(ret)));
strerror(EC_IOCTL_ERRNO(ret)));
return -EC_IOCTL_ERRNO(ret);
}

View File

@@ -1,8 +1,6 @@
/******************************************************************************
*
* $Id$
*
* Copyright (C) 2012 Florian Pose, Ingenieurgemeinschaft IgH
* Copyright (C) 2012-2019 Florian Pose, Ingenieurgemeinschaft IgH
*
* This file is part of the IgH EtherCAT master userspace library.
*
@@ -48,6 +46,7 @@ void ec_reg_request_clear(ec_reg_request_t *reg)
{
if (reg->data) {
free(reg->data);
reg->data = NULL;
}
}

View File

@@ -1,8 +1,6 @@
/******************************************************************************
*
* $Id$
*
* Copyright (C) 2006-2012 Florian Pose, Ingenieurgemeinschaft IgH
* Copyright (C) 2006-2019 Florian Pose, Ingenieurgemeinschaft IgH
*
* This file is part of the IgH EtherCAT master userspace library.
*
@@ -48,6 +46,7 @@ void ec_sdo_request_clear(ec_sdo_request_t *req)
{
if (req->data) {
free(req->data);
req->data = NULL;
}
}

View File

@@ -1,8 +1,6 @@
/******************************************************************************
*
* $Id$
*
* Copyright (C) 2006-2012 Florian Pose, Ingenieurgemeinschaft IgH
* Copyright (C) 2006-2019 Florian Pose, Ingenieurgemeinschaft IgH
*
* This file is part of the IgH EtherCAT master userspace library.
*
@@ -53,22 +51,28 @@ void ec_slave_config_clear(ec_slave_config_t *sc)
while (r) {
next_r = r->next;
ec_sdo_request_clear(r);
free(r);
r = next_r;
}
sc->first_sdo_request = NULL;
e = sc->first_reg_request;
while (e) {
next_e = e->next;
ec_reg_request_clear(e);
free(e);
e = next_e;
}
sc->first_reg_request = NULL;
v = sc->first_voe_handler;
while (v) {
next_v = v->next;
ec_voe_handler_clear(v);
free(v);
v = next_v;
}
sc->first_voe_handler = NULL;
}
/*****************************************************************************/

View File

@@ -1,8 +1,6 @@
/******************************************************************************
*
* $Id$
*
* Copyright (C) 2006-2012 Florian Pose, Ingenieurgemeinschaft IgH
* Copyright (C) 2006-2019 Florian Pose, Ingenieurgemeinschaft IgH
*
* This file is part of the IgH EtherCAT master userspace library.
*
@@ -49,6 +47,7 @@ void ec_voe_handler_clear(ec_voe_handler_t *voe)
{
if (voe->data) {
free(voe->data);
voe->data = NULL;
}
}