Changeset: 93501b1cb37f for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/93501b1cb37f Modified Files: clients/Tests/exports.stable.out clients/mapilib/msettings.c clients/mapilib/msettings.h Branch: odbc-tls Log Message:
Add msettings_reset function diffs (71 lines): diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out --- a/clients/Tests/exports.stable.out +++ b/clients/Tests/exports.stable.out @@ -776,6 +776,7 @@ const msettings *msettings_default; msettings *msettings_destroy(msettings *mp); bool msettings_malloc_failed(msettings_error err); bool msettings_parse_url(msettings *mp, const char *url, char **error_buffer); +void msettings_reset(msettings *mp); void msettings_set_localizer(msettings *mp, const char *(*localizer)(const void *data, mparm parm), void *data); bool msettings_validate(msettings *mp, char **errmsg); const char *wsaerror(int); diff --git a/clients/mapilib/msettings.c b/clients/mapilib/msettings.c --- a/clients/mapilib/msettings.c +++ b/clients/mapilib/msettings.c @@ -264,7 +264,6 @@ msettings *msettings_create(void) { msettings *mp = malloc(sizeof(*mp)); if (!mp) { - free(mp); return NULL; } *mp = msettings_default_values; @@ -323,6 +322,37 @@ bailout: return NULL; } +void +msettings_reset(msettings *mp) +{ + // free modified string settings + struct string *start = &mp->dummy_start_string; + struct string *end = &mp->dummy_end_string; + for (struct string *p = start; p < end; p++) { + if (p->must_free) + free(p->str); + } + + // free unknown parameters + if (mp->nr_unknown) { + for (size_t i = 0; i < 2 * mp->nr_unknown; i++) + free(mp->unknown_parameters[i]); + free(mp->unknown_parameters); + } + + // free the buffer + free(mp->unix_sock_name_buffer); + + // keep the localizer + void *localizer = mp->localizer; + void *localizer_data = mp->localizer_data; + + // now overwrite the whole thing + *mp = *msettings_default; + mp->localizer = localizer; + mp->localizer_data = localizer_data; +} + msettings * msettings_destroy(msettings *mp) { diff --git a/clients/mapilib/msettings.h b/clients/mapilib/msettings.h --- a/clients/mapilib/msettings.h +++ b/clients/mapilib/msettings.h @@ -126,6 +126,7 @@ mapi_export bool msettings_malloc_failed /* returns NULL if could not allocate */ mapi_export msettings *msettings_create(void); mapi_export msettings *msettings_clone(const msettings *mp); +mapi_export void msettings_reset(msettings *mp); mapi_export const msettings *msettings_default; /* always returns NULL */ _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org