diff options
| author | Srinivasa Ragavan <sragavan@src.gnome.org> | 2007-06-03 12:59:51 +0000 |
|---|---|---|
| committer | Srinivasa Ragavan <sragavan@src.gnome.org> | 2007-06-03 12:59:51 +0000 |
| commit | 3cd7c370406fe6c07a61d0ae662183942a3a3414 (patch) | |
| tree | 986216c612fd0bac941cc23c610a1cc79e70dd44 /servers | |
| parent | d32b3f4796bd71ec842849818e9d691270f62de2 (diff) | |
| download | evolution-data-server-3cd7c370406fe6c07a61d0ae662183942a3a3414.tar.gz | |
** Memory leak fixes from bug #440524
svn path=/trunk/; revision=7797
Diffstat (limited to 'servers')
| -rw-r--r-- | servers/groupwise/ChangeLog | 7 | ||||
| -rw-r--r-- | servers/groupwise/e-gw-connection.c | 24 | ||||
| -rw-r--r-- | servers/groupwise/e-gw-item.c | 45 |
3 files changed, 63 insertions, 13 deletions
diff --git a/servers/groupwise/ChangeLog b/servers/groupwise/ChangeLog index 19dc686b5..98901904d 100644 --- a/servers/groupwise/ChangeLog +++ b/servers/groupwise/ChangeLog @@ -1,3 +1,10 @@ +2007-06-03 Srinivasa Ragavan <sragavan@novell.com> + + ** Memory leak fixes from bug #440524 + + * e-gw-connection.c: (e_gw_connection_get_items_delta_info): + * e-gw-item.c: (set_contact_fields_from_soap_parameter): + 2007-05-07 Matthew Barnes <mbarnes@redhat.com> * e-gw-item.c: diff --git a/servers/groupwise/e-gw-connection.c b/servers/groupwise/e-gw-connection.c index f4170c623..cccedd7aa 100644 --- a/servers/groupwise/e-gw-connection.c +++ b/servers/groupwise/e-gw-connection.c @@ -694,6 +694,7 @@ e_gw_connection_get_items_delta_info (EGwConnection *cnc, const char *container, SoupSoapResponse *response; EGwConnectionStatus status; SoupSoapParameter *param, *subparam; + char *tmp = NULL; g_return_val_if_fail (E_IS_GW_CONNECTION (cnc), E_GW_CONNECTION_STATUS_INVALID_OBJECT); @@ -735,23 +736,30 @@ e_gw_connection_get_items_delta_info (EGwConnection *cnc, const char *container, subparam = soup_soap_parameter_get_first_child_by_name (param, "firstSequence"); - if (subparam) - *first_sequence = strtod (soup_soap_parameter_get_string_value(subparam), NULL); - else + if (subparam) { + tmp = soup_soap_parameter_get_string_value(subparam); + *first_sequence = strtod (tmp, NULL); + g_free (tmp); + } else *first_sequence = -1; subparam = soup_soap_parameter_get_first_child_by_name (param, "lastSequence"); - if (subparam) - *last_sequence = strtod (soup_soap_parameter_get_string_value(subparam), NULL); + if (subparam) { + tmp = soup_soap_parameter_get_string_value(subparam); + *last_sequence = strtod (tmp, NULL); + g_free (tmp); + } else *last_sequence = -1; subparam = soup_soap_parameter_get_first_child_by_name (param, "lastTimePORebuild"); - if (subparam) - *last_po_rebuild_time = strtod (soup_soap_parameter_get_string_value(subparam), NULL); - else + if (subparam) { + tmp = soup_soap_parameter_get_string_value(subparam); + *last_po_rebuild_time = strtod (tmp, NULL); + g_free (tmp); + } else *last_po_rebuild_time = -1; g_object_unref (response); diff --git a/servers/groupwise/e-gw-item.c b/servers/groupwise/e-gw-item.c index ed22400aa..86f2833d8 100644 --- a/servers/groupwise/e-gw-item.c +++ b/servers/groupwise/e-gw-item.c @@ -1165,10 +1165,36 @@ set_contact_fields_from_soap_parameter (EGwItem *item, SoupSoapParameter *param) g_hash_table_insert (simple_fields, "default_phone", soup_soap_parameter_get_property(subparam, "default")); for ( temp = soup_soap_parameter_get_first_child (subparam); temp != NULL; temp = soup_soap_parameter_get_next_child (temp)) { + const char *key = NULL; + type = soup_soap_parameter_get_property (temp, "type"); value = soup_soap_parameter_get_string_value (temp); - g_hash_table_insert (item->priv->simple_fields, g_strconcat("phone_", type, NULL) , value); - g_free (type); + switch (*type) { + case 'O' : + key = "phone_Office"; + break; + case 'H' : + key = "phone_Home"; + break; + case 'P' : + key = "phone_Pager"; + break; + case 'M' : + key = "phone_Mobile"; + break; + case 'F' : + key = "phone_Fax"; + break; + default: + /* It should never come here. For the worst */ + key = "phone_"; + break; + }; + + if (type) { + g_hash_table_insert (item->priv->simple_fields, key, value); + g_free (type); + } } } subparam = soup_soap_parameter_get_first_child_by_name(param, "personalInfo"); @@ -1217,14 +1243,23 @@ set_contact_fields_from_soap_parameter (EGwItem *item, SoupSoapParameter *param) subparam = soup_soap_parameter_get_first_child_by_name (param, "addressList"); if (subparam) { for ( temp = soup_soap_parameter_get_first_child (subparam); temp != NULL; temp = soup_soap_parameter_get_next_child (temp)) { - + const char *add = NULL; address = g_new0 (PostalAddress, 1); set_postal_address_from_soap_parameter (address, temp); value = soup_soap_parameter_get_property(temp, "type"); - if (value) - g_hash_table_insert (item->priv->addresses, value, address); + + if (value && value[0] == 'H') + add = "Home"; + else if (value && value[0] == 'O') + add = "Office"; + else + add = "Other"; + + if (value) + g_hash_table_insert (item->priv->addresses, add, address); else free_postal_address (address); + g_free (value); } } |
