Free bus statements from the configuration file as soon as we are done

with them.


git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@5645 7894878c-1315-0410-8ee3-d5d059ff63e0
This commit is contained in:
Jean Delvare committed 2009-02-15 17:18:01 +00:00
1 parent 16dbc995ec
commit d5bead6025
2 files changed
+30 -18

No files matched your search

+1
View File
@@ -11,6 +11,7 @@ SVN-HEAD
Fix memory leak in scanner when using flex 2.5.9 or later
Report configuration file read errors
Exit the configuration file parser sooner
Free bus statements from the configuration file sooner
lm_sensors.init: Support new format of /etc/sysconfig/lm_sensors (#2246)
Drop support for kernels 2.4 and earlier
lm_sensors.init.suse: Delete (actual SuSE script is much different)
+29 -18
View File
@@ -61,18 +61,42 @@ static int sensors_parse(void)
return res;
}
static void free_bus(sensors_bus *bus)
{
free(bus->adapter);
}
static void free_config_busses(void)
{
int i;
for (i = 0; i < sensors_config_busses_count; i++)
free_bus(&sensors_config_busses[i]);
free(sensors_config_busses);
sensors_config_busses = NULL;
sensors_config_busses_count = sensors_config_busses_max = 0;
}
static int parse_config(FILE *input)
{
int err;
if (sensors_scanner_init(input))
return -SENSORS_ERR_PARSE;
if (sensors_scanner_init(input)) {
err = -SENSORS_ERR_PARSE;
goto exit_cleanup;
}
err = sensors_parse();
sensors_scanner_exit();
if (err)
return -SENSORS_ERR_PARSE;
if (err) {
err = -SENSORS_ERR_PARSE;
goto exit_cleanup;
}
return 0;
err = sensors_substitute_busses();
exit_cleanup:
free_config_busses();
return err;
}
int sensors_init(FILE *input)
@@ -107,8 +131,6 @@ int sensors_init(FILE *input)
}
}
if ((res = sensors_substitute_busses()))
goto exit_cleanup;
return 0;
exit_cleanup:
@@ -134,11 +156,6 @@ static void free_chip_features(sensors_chip_features *features)
free(features->feature);
}
static void free_bus(sensors_bus *bus)
{
free(bus->adapter);
}
static void free_label(sensors_label *label)
{
free(label->name);
@@ -218,12 +235,6 @@ void sensors_cleanup(void)
sensors_proc_chips = NULL;
sensors_proc_chips_count = sensors_proc_chips_max = 0;
for (i = 0; i < sensors_config_busses_count; i++)
free_bus(&sensors_config_busses[i]);
free(sensors_config_busses);
sensors_config_busses = NULL;
sensors_config_busses_count = sensors_config_busses_max = 0;
for (i = 0; i < sensors_config_chips_count; i++)
free_chip(&sensors_config_chips[i]);
free(sensors_config_chips);