Index: addressbook/gui/contact-list-editor/e-contact-list-editor.c
===================================================================
--- addressbook/gui/contact-list-editor/e-contact-list-editor.c	(revision 35825)
+++ addressbook/gui/contact-list-editor/e-contact-list-editor.c	(working copy)
@@ -1334,6 +1334,7 @@ e_contact_list_editor_get_contact (ECont
 	GtkTreeIter iter;
 	gboolean iter_valid;
 	const gchar *text;
+	GSList *attrs = NULL, *a;
 
 	g_return_val_if_fail (E_IS_CONTACT_LIST_EDITOR (editor), NULL);
 
@@ -1367,13 +1368,20 @@ e_contact_list_editor_get_contact (ECont
 
 		gtk_tree_model_get (model, &iter, 0, &dest, -1);
 		attr = e_vcard_attribute_new (NULL, EVC_EMAIL);
-		e_vcard_add_attribute (E_VCARD (contact), attr);
+		attrs = g_slist_prepend (attrs, attr);
 		e_destination_export_to_vcard_attribute (dest, attr);
 		g_object_unref (dest);
 
 		iter_valid = gtk_tree_model_iter_next (model, &iter);
 	}
 
+	/* Put it in reverse order because e_vcard_add_attribute also uses prepend,
+	   but we want to keep order of mails there. Hopefully noone will change
+	   the behaviour of the e_vcard_add_attribute. */
+	for (a = attrs; a; a = a->next) {
+		e_vcard_add_attribute (E_VCARD (contact), a->data);
+	}
+
 	return contact;
 }
 
Index: addressbook/ChangeLog
===================================================================
--- addressbook/ChangeLog	(revision 35825)
+++ addressbook/ChangeLog	(working copy)
@@ -1,3 +1,12 @@
+2008-07-23  Milan Crha  <mcrha@redhat.com>
+
+	** Fix for bug #544383
+
+	* gui/contact-list-editor/e-contact-list-editor.c:
+	(e_contact_list_editor_get_contact): Put list members in reverse order,
+	because 'e_vcard_add_attribute' uses prepend, thus changes order on
+	every single save of the contact list.
+
 2008-07-20  Andre Klapper  <a9016009@gmx.de>
 
 	* addressbook.error.xml: Fix some strings. See bug #543753.
