identity: fix a bug and use local copy of identity info when performing store
authorJussi Laako <jussi.laako@linux.intel.com>
Mon, 3 Mar 2014 15:37:55 +0000 (17:37 +0200)
committerJussi Laako <jussi.laako@linux.intel.com>
Mon, 3 Mar 2014 15:55:38 +0000 (17:55 +0200)
libgsignon-glib/signon-identity.c

index 12b8fed37b239d98a2f4e985eeb480375f3a626e..c2e22240922f1b062a2cbe0feb82d15b2c710c53 100644 (file)
@@ -899,9 +899,10 @@ signon_identity_store_credentials_with_info(SignonIdentity *self,
     g_return_if_fail (info != NULL);
 
     SignonIdentityPrivate *priv = self->priv;
+    SignonIdentityInfo *new_info = signon_identity_info_copy (info);
     if (priv->identity_info)
         signon_identity_info_free (priv->identity_info);
-    priv->identity_info = signon_identity_info_copy (info);
+    priv->identity_info = new_info;
 
     cb_data = g_slice_new0 (IdentityStoreCredentialsCbData);
     cb_data->self = self;
@@ -909,7 +910,8 @@ signon_identity_store_credentials_with_info(SignonIdentity *self,
     cb_data->user_data = user_data;
 
     operation_data = g_slice_new0 (IdentityStoreCredentialsData);
-    operation_data->info_variant = signon_identity_info_to_variant (info);
+    operation_data->info_variant =
+        signon_identity_info_to_variant (priv->identity_info);
     operation_data->cb_data = cb_data;
 
     identity_check_remote_registration (self);