From 1736cb1d596076b3f727bbe501b15be4ada7b769 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Wed, 14 Jan 2015 13:39:35 +0100 Subject: [PATCH] driver_settings: fix allocating an empty settings I misread the condition and broke this in 0687a01. Thanks to Axel for reviewing! * Refactor the code again to move all the error checking at the top of the function, to make it easier to read. --- src/system/libroot/os/driver_settings.cpp | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/system/libroot/os/driver_settings.cpp b/src/system/libroot/os/driver_settings.cpp index 065092e4dc..17a6473dfb 100644 --- a/src/system/libroot/os/driver_settings.cpp +++ b/src/system/libroot/os/driver_settings.cpp @@ -828,19 +828,18 @@ load_driver_settings_file(int fd) void * parse_driver_settings_string(const char *settingsString) { - if (settingsString == NULL) - return NULL; - - // we simply copy the whole string to use it as our internal buffer - char *text = strdup(settingsString); - if (text != NULL) { - settings_handle *handle = new_settings(text, NULL); - if (handle == NULL) - free(text); - return handle; + char *text = NULL; + if (settingsString != NULL) { + // we simply copy the whole string to use it as our internal buffer + text = strdup(settingsString); + if (text == NULL) + return NULL; } - return NULL; + settings_handle *handle = new_settings(text, NULL); + if (handle == NULL) + free(text); + return handle; }