mraa.c: fix error handling & leak in mraa_setup_mux_mapped
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
This commit is contained in:
15
src/mraa.c
15
src/mraa.c
@@ -125,15 +125,24 @@ mraa_result_t
|
|||||||
mraa_setup_mux_mapped(mraa_pin_t meta)
|
mraa_setup_mux_mapped(mraa_pin_t meta)
|
||||||
{
|
{
|
||||||
int mi;
|
int mi;
|
||||||
|
|
||||||
for (mi = 0; mi < meta.mux_total; mi++) {
|
for (mi = 0; mi < meta.mux_total; mi++) {
|
||||||
mraa_gpio_context mux_i;
|
mraa_gpio_context mux_i;
|
||||||
mux_i = mraa_gpio_init_raw(meta.mux[mi].pin);
|
mux_i = mraa_gpio_init_raw(meta.mux[mi].pin);
|
||||||
if (mux_i == NULL)
|
if (mux_i == NULL) {
|
||||||
return MRAA_ERROR_INVALID_HANDLE;
|
return MRAA_ERROR_INVALID_HANDLE;
|
||||||
mraa_gpio_dir(mux_i, MRAA_GPIO_OUT);
|
}
|
||||||
if (mraa_gpio_write(mux_i, meta.mux[mi].value) != MRAA_SUCCESS)
|
if (mraa_gpio_dir(mux_i, MRAA_GPIO_OUT) != MRAA_SUCCESS) {
|
||||||
|
mraa_gpio_close(mux_i);
|
||||||
|
return MRAA_ERROR_UNSPECIFIED;
|
||||||
|
}
|
||||||
|
if (mraa_gpio_write(mux_i, meta.mux[mi].value) != MRAA_SUCCESS) {
|
||||||
|
mraa_gpio_close(mux_i);
|
||||||
return MRAA_ERROR_INVALID_RESOURCE;
|
return MRAA_ERROR_INVALID_RESOURCE;
|
||||||
}
|
}
|
||||||
|
mraa_gpio_close(mux_i);
|
||||||
|
}
|
||||||
|
|
||||||
return MRAA_SUCCESS;
|
return MRAA_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user