diff --git a/e-util/e-signature.c b/e-util/e-signature.c
index 1b22dba..2d8da48 100644
--- a/e-util/e-signature.c
+++ b/e-util/e-signature.c
@@ -445,8 +445,13 @@ e_signature_set_from_xml (ESignature *signature, const gchar *xml)
 		return FALSE;
 	}
 
-	if (!signature->priv->uid)
-		xml_set_prop (node, "uid", &signature->priv->uid);
+	buf = NULL;
+	xml_set_prop (node, "uid", &buf);
+
+	if (buf && *buf) {
+		g_free (signature->priv->uid);
+		signature->priv->uid = buf;
+	}
 
 	changed |= xml_set_prop (node, "name", &signature->priv->name);
 	changed |= xml_set_bool (node, "auto", &signature->priv->autogenerated);
