diff --git a/include/fluidsynth/settings.h b/include/fluidsynth/settings.h index e2782da8..7819d37d 100644 --- a/include/fluidsynth/settings.h +++ b/include/fluidsynth/settings.h @@ -138,7 +138,7 @@ FLUIDSYNTH_API int fluid_settings_dupstr(fluid_settings_t* settings, const char *name, char** str); FLUIDSYNTH_API -char* fluid_settings_getstr_default(fluid_settings_t* settings, const char *name); +int fluid_settings_getstr_default(fluid_settings_t* settings, const char *name, char** def); FLUIDSYNTH_API int fluid_settings_str_equal(fluid_settings_t* settings, const char *name, const char *value); diff --git a/src/bindings/fluid_cmd.c b/src/bindings/fluid_cmd.c index 49bc1f4e..c61284cc 100644 --- a/src/bindings/fluid_cmd.c +++ b/src/bindings/fluid_cmd.c @@ -1602,8 +1602,8 @@ fluid_handle_info(void* d, int ac, char** av, fluid_ostream_t out) fluid_ostream_printf(out, "%s:\n", av[0]); fluid_ostream_printf(out, "Type: string\n"); fluid_ostream_printf(out, "Value: %s\n", s ? s : "NULL"); - fluid_ostream_printf(out, "Default value: %s\n", - fluid_settings_getstr_default(settings, av[0])); + fluid_settings_getstr_default(settings, av[0], &s); + fluid_ostream_printf(out, "Default value: %s\n", s); if (s) FLUID_FREE (s); diff --git a/src/fluidsynth.c b/src/fluidsynth.c index 64060380..603ebf98 100644 --- a/src/fluidsynth.c +++ b/src/fluidsynth.c @@ -188,7 +188,7 @@ settings_foreach_func (void *data, const char *name, int type) case FLUID_STR_TYPE: printf ("%-24s STR", name); - defstr = fluid_settings_getstr_default (settings, name); + fluid_settings_getstr_default (settings, name, &defstr); count = fluid_settings_option_count (settings, name); if (defstr || count > 0) diff --git a/src/utils/fluid_settings.c b/src/utils/fluid_settings.c index ed8ec5ea..5d315533 100644 --- a/src/utils/fluid_settings.c +++ b/src/utils/fluid_settings.c @@ -1048,17 +1048,18 @@ fluid_settings_str_equal (fluid_settings_t* settings, const char *name, const ch * * @param settings a settings object * @param name a setting's name - * @return the default string value of the setting if it exists, NULL otherwise + * @param def the default string value of the setting if it exists + * @return FLUID_OK on success, FLUID_FAILED otherwise */ -char* -fluid_settings_getstr_default(fluid_settings_t* settings, const char *name) +int +fluid_settings_getstr_default(fluid_settings_t* settings, const char *name, char** def) { fluid_setting_node_t *node; char *retval = NULL; - fluid_return_val_if_fail (settings != NULL, NULL); - fluid_return_val_if_fail (name != NULL, NULL); - fluid_return_val_if_fail (name[0] != '\0', NULL); + fluid_return_val_if_fail (settings != NULL, FLUID_FAILED); + fluid_return_val_if_fail (name != NULL, FLUID_FAILED); + fluid_return_val_if_fail (name[0] != '\0', FLUID_FAILED); fluid_rec_mutex_lock (settings->mutex); @@ -1078,9 +1079,10 @@ fluid_settings_getstr_default(fluid_settings_t* settings, const char *name) } } + *def = retval; fluid_rec_mutex_unlock (settings->mutex); - return retval; + return retval != NULL ? FLUID_OK : FLUID_FAILED; } /**