From 917a1bd371f2cc795799f42a8e27fa1c81e01049 Mon Sep 17 00:00:00 2001 From: Alex Tereschenko Date: Sun, 10 Jul 2016 17:36:04 +0200 Subject: [PATCH] aio: added context validity and replace function checks to aio_close() Added standard context validity check, another check for a replace function and corrected a return statement to fit our standard code style. Signed-off-by: Alex Tereschenko Signed-off-by: Brendan Le Foll --- include/mraa_adv_func.h | 1 + src/aio/aio.c | 19 ++++++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/include/mraa_adv_func.h b/include/mraa_adv_func.h index 40cae5d..9c017a5 100644 --- a/include/mraa_adv_func.h +++ b/include/mraa_adv_func.h @@ -78,6 +78,7 @@ typedef struct { mraa_result_t (*i2c_stop_replace) (mraa_i2c_context dev); mraa_result_t (*aio_init_internal_replace) (mraa_aio_context dev, int pin); + mraa_result_t (*aio_close_replace) (mraa_aio_context dev); int (*aio_read_replace) (mraa_aio_context dev); mraa_result_t (*aio_get_valid_fp) (mraa_aio_context dev); mraa_result_t (*aio_init_pre) (unsigned int aio); diff --git a/src/aio/aio.c b/src/aio/aio.c index 35a2c43..16a203f 100644 --- a/src/aio/aio.c +++ b/src/aio/aio.c @@ -225,13 +225,22 @@ mraa_aio_read_float(mraa_aio_context dev) mraa_result_t mraa_aio_close(mraa_aio_context dev) { - if (NULL != dev) { - if (dev->adc_in_fp != -1) - close(dev->adc_in_fp); - free(dev); + if (dev == NULL) { + syslog(LOG_ERR, "aio: close: context is invalid"); + return MRAA_ERROR_INVALID_HANDLE; } - return (MRAA_SUCCESS); + if (IS_FUNC_DEFINED(dev, aio_close_replace)) { + return dev->advance_func->aio_close_replace(dev); + } + + if (dev->adc_in_fp != -1) { + close(dev->adc_in_fp); + } + + free(dev); + + return MRAA_SUCCESS; } mraa_result_t