diff options
author | Philip Withnall <philip@tecnocode.co.uk> | 2011-10-20 17:19:25 +0100 |
---|---|---|
committer | Philip Withnall <philip@tecnocode.co.uk> | 2011-10-20 17:19:25 +0100 |
commit | 2c7d5579bb82658a2df04dd1e209d9d73d5195ee (patch) | |
tree | 46378fd1d87b2d284e02d25b9a74f86156cfcc5b /gdata/gd/gdata-gd-name.c | |
parent | ec55e6507cdf650a5e071e416fd95192da84a2a6 (diff) | |
download | libgdata-2c7d5579bb82658a2df04dd1e209d9d73d5195ee.tar.gz |
Bug 662290 — Can't update contact that has no full name
Treat the empty string as if it were NULL for GDataGDName:full-name. Add a
test case which does so too.
This should fix round-trips to Google for contacts which have no full name
set.
Closes: bgo#662290
Diffstat (limited to 'gdata/gd/gdata-gd-name.c')
-rw-r--r-- | gdata/gd/gdata-gd-name.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/gdata/gd/gdata-gd-name.c b/gdata/gd/gdata-gd-name.c index 8300f011..7da99934 100644 --- a/gdata/gd/gdata-gd-name.c +++ b/gdata/gd/gdata-gd-name.c @@ -326,7 +326,11 @@ get_xml (GDataParsable *parsable, GString *xml_string) OUTPUT_STRING_ELEMENT ("familyName", family_name) OUTPUT_STRING_ELEMENT ("namePrefix", prefix) OUTPUT_STRING_ELEMENT ("nameSuffix", suffix) - OUTPUT_STRING_ELEMENT ("fullName", full_name) + + /* We can't guarantee that priv->full_name is non-empty without breaking API. */ + if (priv->full_name != NULL && *(priv->full_name) != '\0') { + gdata_parser_string_append_escaped (xml_string, "<gd:fullName>", priv->full_name, "</gd:fullName>"); + } #undef OUTPUT_STRING_ELEMENT } @@ -573,6 +577,12 @@ gdata_gd_name_set_full_name (GDataGDName *self, const gchar *full_name) { g_return_if_fail (GDATA_IS_GD_NAME (self)); + /* Coerce empty strings to NULL. Ideally, we should have this as a precondition (as all the other setters in GDataGDName have) but that would + * break API. */ + if (full_name != NULL && *full_name == '\0') { + full_name = NULL; + } + g_free (self->priv->full_name); self->priv->full_name = g_strdup (full_name); g_object_notify (G_OBJECT (self), "full-name"); |