tests: fix linked list leak

Don't overwrite the original pointer returned by ec_find_adapters(),
otherwise the linked list is leaked. Instead, save original pointer to
the head of the list use and `adapters` as a temporary variable. Pass
the original pointer to ec_free_adapters().

For win32, ec_free_adapters() was missing entirely.
This commit is contained in:
Johannes Kauffmann
2025-04-08 14:33:08 +02:00
committed by Hans-Erik Floryd
parent 7271d3663e
commit 2f08b49aac
7 changed files with 21 additions and 11 deletions
+3 -2
View File
@@ -457,6 +457,7 @@ int main(int argc, char *argv[])
else
{
ec_adaptert * adapter = NULL;
ec_adaptert * head = NULL;
printf("Usage: eepromtool ifname slave OPTION fname|alias\n");
printf("ifname = eth0 for example\n");
@@ -469,13 +470,13 @@ int main(int argc, char *argv[])
printf(" -wi write EEPROM, input Intel Hex format\n");
printf ("\nAvailable adapters:\n");
adapter = ec_find_adapters ();
head = adapter = ec_find_adapters ();
while (adapter != NULL)
{
printf (" - %s (%s)\n", adapter->name, adapter->desc);
adapter = adapter->next;
}
ec_free_adapters(adapter);
ec_free_adapters(head);
}
printf("End program\n");
+3 -2
View File
@@ -242,16 +242,17 @@ int main(int argc, char *argv[])
else
{
ec_adaptert * adapter = NULL;
ec_adaptert * head = NULL;
printf("Usage: simple_test ifname1\nifname = eth0 for example\n");
printf ("\nAvailable adapters:\n");
adapter = ec_find_adapters ();
head = adapter = ec_find_adapters ();
while (adapter != NULL)
{
printf (" - %s (%s)\n", adapter->name, adapter->desc);
adapter = adapter->next;
}
ec_free_adapters(adapter);
ec_free_adapters(head);
}
printf("End program\n");
+3 -2
View File
@@ -699,6 +699,7 @@ char ifbuf[1024];
int main(int argc, char *argv[])
{
ec_adaptert * adapter = NULL;
ec_adaptert * head = NULL;
printf("SOEM (Simple Open EtherCAT Master)\nSlaveinfo\n");
if (argc > 1)
@@ -714,13 +715,13 @@ int main(int argc, char *argv[])
printf("Usage: slaveinfo ifname [options]\nifname = eth0 for example\nOptions :\n -sdo : print SDO info\n -map : print mapping\n");
printf ("Available adapters\n");
adapter = ec_find_adapters ();
head = adapter = ec_find_adapters ();
while (adapter != NULL)
{
printf ("Description : %s, Device to use for wpcap: %s\n", adapter->desc,adapter->name);
adapter = adapter->next;
}
ec_free_adapters(adapter);
ec_free_adapters(head);
}
printf("End program\n");
+3 -2
View File
@@ -287,17 +287,18 @@ main(int argc, char *argv[])
if (argc != 2) {
ec_adaptert * adapter = NULL;
ec_adaptert * head = NULL;
printf("Usage: simple_ng IFNAME1\n"
"IFNAME1 is the NIC interface name, e.g. 'eth0'\n");
printf("\nAvailable adapters:\n");
adapter = ec_find_adapters();
head = adapter = ec_find_adapters();
while (adapter != NULL)
{
printf(" - %s (%s)\n", adapter->name, adapter->desc);
adapter = adapter->next;
}
ec_free_adapters(adapter);
ec_free_adapters(head);
return 1;
}
+3 -1
View File
@@ -349,6 +349,7 @@ void eepromtool(char *ifname, int slave, int mode, char *fname)
int main(int argc, char *argv[])
{
ec_adaptert * adapter = NULL;
ec_adaptert * head = NULL;
printf("SOEM (Simple Open EtherCAT Master)\nEEPROM tool\n");
if (argc > 4)
@@ -374,12 +375,13 @@ int main(int argc, char *argv[])
printf(" -wi write EEPROM, input Intel Hex format\n");
/* Print the list */
printf ("Available adapters\n");
adapter = ec_find_adapters ();
head = adapter = ec_find_adapters ();
while (adapter != NULL)
{
printf ("Description : %s, Device to use for wpcap: %s\n", adapter->desc,adapter->name);
adapter = adapter->next;
}
ec_free_adapters(adapter);
}
printf("End program\n");
+3 -1
View File
@@ -345,6 +345,7 @@ char ifbuf[1024];
int main(int argc, char *argv[])
{
ec_adaptert * adapter = NULL;
ec_adaptert * head = NULL;
printf("SOEM (Simple Open EtherCAT Master)\nSimple test\n");
if (argc > 1)
@@ -360,12 +361,13 @@ int main(int argc, char *argv[])
printf("Usage: simple_test ifname1\n");
/* Print the list */
printf ("Available adapters\n");
adapter = ec_find_adapters ();
head = adapter = ec_find_adapters ();
while (adapter != NULL)
{
printf ("Description : %s, Device to use for wpcap: %s\n", adapter->desc,adapter->name);
adapter = adapter->next;
}
ec_free_adapters(adapter);
}
printf("End program\n");
+3 -1
View File
@@ -618,6 +618,7 @@ char ifbuf[1024];
int main(int argc, char *argv[])
{
ec_adaptert * adapter = NULL;
ec_adaptert * head = NULL;
printf("SOEM (Simple Open EtherCAT Master)\nSlaveinfo\n");
if (argc > 1)
@@ -633,12 +634,13 @@ int main(int argc, char *argv[])
printf("Usage: slaveinfo ifname [options]\nifname = eth0 for example\nOptions :\n -sdo : print SDO info\n -map : print mapping\n");
/* Print the list */
printf ("Available adapters\n");
adapter = ec_find_adapters ();
head = adapter = ec_find_adapters ();
while (adapter != NULL)
{
printf ("Description : %s, Device to use for wpcap: %s\n", adapter->desc,adapter->name);
adapter = adapter->next;
}
ec_free_adapters(head);
}
printf("End program\n");