GPIO 7 erroneous access + few memory leaks - release

This commit is contained in:
Philippe G
2020-08-18 18:06:40 -07:00
parent 7ce65b3095
commit 7f1b92927c
2 changed files with 5 additions and 7 deletions

View File

@@ -372,7 +372,6 @@ static int do_i2c_set_display(int argc, char **argv)
int result = 0; int result = 0;
char * name = NULL; char * name = NULL;
char * driver= NULL; char * driver= NULL;
char * err_message=malloc(1);
char config_string[200]={}; char config_string[200]={};
bool bHasi2cConfig = false, bHasSpiConfig=false; bool bHasi2cConfig = false, bHasSpiConfig=false;
int nerrors = arg_parse_msg(argc, argv,(struct arg_hdr **)&i2cdisp_args); int nerrors = arg_parse_msg(argc, argv,(struct arg_hdr **)&i2cdisp_args);
@@ -383,20 +382,19 @@ static int do_i2c_set_display(int argc, char **argv)
char * nvs_item = config_alloc_get(NVS_TYPE_STR, "i2c_config"); char * nvs_item = config_alloc_get(NVS_TYPE_STR, "i2c_config");
if (nvs_item && strlen(nvs_item)>0) { if (nvs_item && strlen(nvs_item)>0) {
bHasi2cConfig=true; bHasi2cConfig=true;
FREE_AND_NULL(nvs_item);
} }
FREE_AND_NULL(nvs_item);
nvs_item = config_alloc_get(NVS_TYPE_STR, "spi_config"); nvs_item = config_alloc_get(NVS_TYPE_STR, "spi_config");
if (nvs_item && strlen(nvs_item)>0) { if (nvs_item && strlen(nvs_item)>0) {
bHasSpiConfig=true; bHasSpiConfig=true;
FREE_AND_NULL(nvs_item);
} }
FREE_AND_NULL(nvs_item);
/* Check "--clear" option */ /* Check "--clear" option */
if (i2cdisp_args.clear->count) { if (i2cdisp_args.clear->count) {
log_send_messaging(MESSAGING_WARNING,"Display config cleared"); log_send_messaging(MESSAGING_WARNING,"Display config cleared");
config_set_value(NVS_TYPE_STR, "display_config", ""); config_set_value(NVS_TYPE_STR, "display_config", "");
FREE_AND_NULL(err_message);
return 0; return 0;
} }
char *buf = NULL; char *buf = NULL;

View File

@@ -228,7 +228,7 @@ void output_init_i2s(log_level level, char *device, unsigned output_buf_size, ch
char *dac_config = config_alloc_get_str("dac_config", CONFIG_DAC_CONFIG, "model=i2s,bck=" STR(CONFIG_I2S_BCK_IO) char *dac_config = config_alloc_get_str("dac_config", CONFIG_DAC_CONFIG, "model=i2s,bck=" STR(CONFIG_I2S_BCK_IO)
",ws=" STR(CONFIG_I2S_WS_IO) ",do=" STR(CONFIG_I2S_DO_IO) ",ws=" STR(CONFIG_I2S_WS_IO) ",do=" STR(CONFIG_I2S_DO_IO)
",sda=" STR(CONFIG_I2C_SDA) ",scl=" STR(CONFIG_I2C_SCL) ",sda=" STR(CONFIG_I2C_SDA) ",scl=" STR(CONFIG_I2C_SCL)
",mute" STR(CONFIG_MUTE_GPIO)); ",mute=" STR(CONFIG_MUTE_GPIO));
i2s_pin_config_t i2s_dac_pin, i2s_spdif_pin; i2s_pin_config_t i2s_dac_pin, i2s_spdif_pin;
set_i2s_pin(spdif_config, &i2s_spdif_pin); set_i2s_pin(spdif_config, &i2s_spdif_pin);
@@ -284,7 +284,7 @@ void output_init_i2s(log_level level, char *device, unsigned output_buf_size, ch
char model[32] = "i2s"; char model[32] = "i2s";
if ((p = strcasestr(dac_config, "model")) != NULL) sscanf(p, "%*[^=]=%31[^,]", model); if ((p = strcasestr(dac_config, "model")) != NULL) sscanf(p, "%*[^=]=%31[^,]", model);
if ((p = strcasestr(dac_config, "mute")) != NULL) { if ((p = strcasestr(dac_config, "mute")) != NULL) {
char mute[8]; char mute[8] = "";
sscanf(p, "%*[^=]=%7[^,]", mute); sscanf(p, "%*[^=]=%7[^,]", mute);
mute_control.gpio = atoi(mute); mute_control.gpio = atoi(mute);
if ((p = strchr(mute, ':')) != NULL) mute_control.active = atoi(p + 1); if ((p = strchr(mute, ':')) != NULL) mute_control.active = atoi(p + 1);
@@ -292,7 +292,7 @@ void output_init_i2s(log_level level, char *device, unsigned output_buf_size, ch
for (int i = 0; adac == &dac_external && dac_set[i]; i++) if (strcasestr(dac_set[i]->model, model)) adac = dac_set[i]; for (int i = 0; adac == &dac_external && dac_set[i]; i++) if (strcasestr(dac_set[i]->model, model)) adac = dac_set[i];
res = adac->init(dac_config, I2C_PORT, &i2s_config) ? ESP_OK : ESP_FAIL; res = adac->init(dac_config, I2C_PORT, &i2s_config) ? ESP_OK : ESP_FAIL;
res |= i2s_driver_install(CONFIG_I2S_NUM, &i2s_config, 0, NULL); res |= i2s_driver_install(CONFIG_I2S_NUM, &i2s_config, 0, NULL);
res |= i2s_set_pin(CONFIG_I2S_NUM, &i2s_dac_pin); res |= i2s_set_pin(CONFIG_I2S_NUM, &i2s_dac_pin);