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 -- [email protected]
To unsubscribe send an email to [email protected]