From 693aef651b0b5790528107a660651664dbcc2ba0 Mon Sep 17 00:00:00 2001 From: Peter Verthez Date: Sat, 25 Jan 2003 17:39:18 +0000 Subject: [PATCH] Allow setting strings to NULL (to remove tag). --- gom/gom_modify.c | 41 ++++++++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/gom/gom_modify.c b/gom/gom_modify.c index 5bfb345..7e31a97 100644 --- a/gom/gom_modify.c +++ b/gom/gom_modify.c @@ -48,17 +48,22 @@ char* gom_set_string(char** data, const char* utf8_str) char* result = NULL; char* newptr; - if (!is_utf8_string(utf8_str)) { - gedcom_error(_("The input '%s' is not a valid UTF-8 string"), utf8_str); + if (utf8_str == NULL) { + SAFE_FREE(*data); } else { - newptr = strdup(utf8_str); - if (!newptr) - MEMORY_ERROR; + if (!is_utf8_string(utf8_str)) { + gedcom_error(_("The input '%s' is not a valid UTF-8 string"), utf8_str); + } else { - if (*data) free(*data); - *data = newptr; - result = *data; + newptr = strdup(utf8_str); + if (!newptr) + MEMORY_ERROR; + else { + SAFE_FREE(*data); + *data = newptr; + result = *data; + } } } @@ -68,13 +73,19 @@ char* gom_set_string(char** data, const char* utf8_str) char* gom_set_string_for_locale(char** data, const char* locale_str) { char* result = NULL; - char* utf8_str = convert_locale_to_utf8(locale_str); - - if (!utf8_str) - gedcom_error(_("The input '%s' is not a valid string for the locale"), - locale_str); - else - result = gom_set_string(data, utf8_str); + + if (locale_str == NULL) { + result = gom_set_string(data, NULL); + } + else { + char* utf8_str = convert_locale_to_utf8(locale_str); + + if (!utf8_str) + gedcom_error(_("The input '%s' is not a valid string for the locale"), + locale_str); + else + result = gom_set_string(data, utf8_str); + } return result; } -- 2.30.2