summaryrefslogtreecommitdiff
path: root/gdata/gd/gdata-gd-name.c
diff options
context:
space:
mode:
authorPhilip Withnall <philip@tecnocode.co.uk>2011-10-20 17:19:25 +0100
committerPhilip Withnall <philip@tecnocode.co.uk>2011-10-20 17:19:25 +0100
commit2c7d5579bb82658a2df04dd1e209d9d73d5195ee (patch)
tree46378fd1d87b2d284e02d25b9a74f86156cfcc5b /gdata/gd/gdata-gd-name.c
parentec55e6507cdf650a5e071e416fd95192da84a2a6 (diff)
downloadlibgdata-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.c12
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");