Fix possible causes of leaks and segfaults

This commit is contained in:
Paul Dino Jones 2023-11-12 13:27:17 -05:00
parent 784f71b831
commit 67d0423997
2 changed files with 12 additions and 5 deletions

View File

@ -235,7 +235,7 @@ int loadconfig(const char* config_file, DeviceSettings* ds)
int devsetup(const char* device_type, const char* device_subtype, const char* config_file, MonocoqueSettings* ms, DeviceSettings* ds, config_setting_t* device_settings) int devsetup(const char* device_type, const char* device_subtype, const char* config_file, MonocoqueSettings* ms, DeviceSettings* ds, config_setting_t* device_settings)
{ {
int error = MONOCOQUE_ERROR_NONE; int error = MONOCOQUE_ERROR_NONE;
slogt("Called device setup with %s %s %s", device_type, device_subtype, config_file); //slogt("Called device setup with %s %s %s", device_type, device_subtype, config_file);
ds->dev_type = SIMDEV_UNKNOWN; ds->dev_type = SIMDEV_UNKNOWN;
error = strtodev(device_type, device_subtype, ds); error = strtodev(device_type, device_subtype, ds);
@ -330,7 +330,14 @@ int settingsfree(DeviceSettings ds)
{ {
free(ds.serialdevsettings.portdev); free(ds.serialdevsettings.portdev);
} }
}
}
if (ds.dev_type == SIMDEV_SOUND)
{
if (ds.sounddevsettings.dev != NULL)
{
free(ds.sounddevsettings.dev);
}
}
return 0; return 0;
} }

View File

@ -162,10 +162,10 @@ int main(int argc, char** argv)
const char* device_config_file; const char* device_config_file;
config_setting_lookup_string(config_device, "device", &device_type); config_setting_lookup_string(config_device, "device", &device_type);
config_setting_lookup_string(config_device, "type", &device_subtype); config_setting_lookup_string(config_device, "type", &device_subtype);
//config_setting_lookup_string(config_device, "config", &device_config_file); config_setting_lookup_string(config_device, "config", &device_config_file);
slogt("device type: %s", device_type); //slogt("device type: %s", device_type);
slogt("device sub type: %s", device_subtype); //slogt("device sub type: %s", device_subtype);
//slogt("device config file: %s", device_config_file); //slogt("device config file: %s", device_config_file);
if (error == MONOCOQUE_ERROR_NONE) if (error == MONOCOQUE_ERROR_NONE)
{ {