mraa.c: mraa_deinit make plat pointer NULL after freeing it
This fixes #698 where an application will crash after calling mraa_deinit and
later closing calling deinit again because of the gcc destructor argument
introduced with cac8f7a
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
This commit is contained in:
11
src/mraa.c
11
src/mraa.c
@@ -247,6 +247,7 @@ mraa_deinit()
|
|||||||
if (plat->platform_type == MRAA_JSON_PLATFORM) {
|
if (plat->platform_type == MRAA_JSON_PLATFORM) {
|
||||||
// Free the platform name
|
// Free the platform name
|
||||||
free(plat->platform_name);
|
free(plat->platform_name);
|
||||||
|
plat->platform_name = NULL;
|
||||||
|
|
||||||
// Free the UART device path
|
// Free the UART device path
|
||||||
for (i = 0; i < plat->uart_dev_count; i++) {
|
for (i = 0; i < plat->uart_dev_count; i++) {
|
||||||
@@ -257,15 +258,21 @@ mraa_deinit()
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
free(plat);
|
free(plat);
|
||||||
|
plat = NULL;
|
||||||
|
|
||||||
if (lang_func != NULL)
|
if (lang_func != NULL) {
|
||||||
free(lang_func);
|
free(lang_func);
|
||||||
|
lang_func = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (platform_name != NULL)
|
if (platform_name != NULL) {
|
||||||
free(platform_name);
|
free(platform_name);
|
||||||
|
platform_name = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (plat_iio != NULL) {
|
if (plat_iio != NULL) {
|
||||||
free(plat_iio);
|
free(plat_iio);
|
||||||
|
plat_iio = NULL;
|
||||||
}
|
}
|
||||||
closelog();
|
closelog();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user