Author: pchen Date: Mon Feb 18 07:33:06 2008 New Revision: 8496 URL: http://svn.gnome.org/viewvc/evolution-data-server?rev=8496&view=rev
Log: 2008-02-14 Chenthill Palanisamy <[EMAIL PROTECTED]> Fixes #516408 * backends/caldav/e-cal-backend-caldav.c (e_cal_component_get_href), (e_cal_component_get_etag), (synchronize_cache), (pack_cobj), (caldav_modify_object), (caldav_remove_object), (process_object), (caldav_get_timezone): * backends/contacts/e-cal-backend-contacts.c (e_cal_backend_contacts_get_free_busy), (e_cal_backend_contacts_get_timezone): * backends/file/e-cal-backend-file.c (save_file_when_idle), (notify_removals_cb), (notify_adds_modifies_cb), (e_cal_backend_file_get_object), (e_cal_backend_file_get_timezone), (e_cal_backend_file_get_free_busy), (e_cal_backend_file_receive_objects): * backends/google/e-cal-backend-google-utils.c (e_go_item_from_cal_component), (get_date): * backends/google/e-cal-backend-google.c (e_cal_backend_google_get_timezone): * backends/groupwise/e-cal-backend-groupwise-utils.c (add_send_options_data_to_item), (set_rrule_from_comp), (set_properties_from_cal_component), (start_freebusy_session), (e_cal_backend_groupwise_store_settings): * backends/groupwise/e-cal-backend-groupwise.c (get_deltas), (e_cal_backend_groupwise_get_timezone): * backends/http/e-cal-backend-http.c (retrieval_done), (e_cal_backend_http_get_default_object), (e_cal_backend_http_get_timezone), (e_cal_backend_http_get_free_busy): * backends/weather/e-cal-backend-weather.c * (finished_retrieval_cb), (e_cal_backend_weather_get_timezone), (e_cal_backend_weather_get_free_busy): * libecal/e-cal-component.c (e_cal_component_get_as_string), (e_cal_component_get_recurid_as_string): * libecal/e-cal-component.h: * libecal/e-cal-recur.c (e_cal_recur_set_rule_end_date): * libecal/e-cal.c (foreach_tzid_callback), (e_cal_get_component_as_string_internal), (e_cal_create_object), (e_cal_modify_object), (e_cal_receive_objects), (e_cal_send_objects), (e_cal_add_timezone), (e_cal_set_default_timezone): * libedata-cal/e-cal-backend-cache.c (e_cal_backend_cache_put_component), (e_cal_backend_cache_put_timezone), (e_cal_backend_cache_put_default_timezone): * libedata-cal/e-data-cal-view.c (add_object_to_cache): * tests/ecal/test-ecal.c (list_uids): Remove the duping of * memory which is returned from libical and free the returned by libical. Modified: trunk/calendar/ChangeLog trunk/calendar/backends/caldav/e-cal-backend-caldav.c trunk/calendar/backends/contacts/e-cal-backend-contacts.c trunk/calendar/backends/file/e-cal-backend-file.c trunk/calendar/backends/google/e-cal-backend-google-utils.c trunk/calendar/backends/google/e-cal-backend-google.c trunk/calendar/backends/groupwise/e-cal-backend-groupwise-utils.c trunk/calendar/backends/groupwise/e-cal-backend-groupwise.c trunk/calendar/backends/http/e-cal-backend-http.c trunk/calendar/backends/weather/e-cal-backend-weather.c trunk/calendar/libecal/e-cal-component.c trunk/calendar/libecal/e-cal-component.h trunk/calendar/libecal/e-cal-recur.c trunk/calendar/libecal/e-cal.c trunk/calendar/libedata-cal/e-cal-backend-cache.c trunk/calendar/libedata-cal/e-data-cal-view.c trunk/calendar/tests/ecal/test-ecal.c Modified: trunk/calendar/backends/caldav/e-cal-backend-caldav.c ============================================================================== --- trunk/calendar/backends/caldav/e-cal-backend-caldav.c (original) +++ trunk/calendar/backends/caldav/e-cal-backend-caldav.c Mon Feb 18 07:33:06 2008 @@ -272,7 +272,7 @@ } -static const char * +static char * icomp_x_prop_get (icalcomponent *comp, const char *key) { icalproperty *xprop; @@ -308,7 +308,7 @@ icomp_x_prop_set (icomp, X_E_CALDAV "HREF", href); } -static const char * +static char * e_cal_component_get_href (ECalComponent *comp) { icalcomponent *icomp; @@ -317,7 +317,7 @@ str = NULL; icomp = e_cal_component_get_icalcomponent (comp); - str = (char *) icomp_x_prop_get (icomp, X_E_CALDAV "HREF"); + str = icomp_x_prop_get (icomp, X_E_CALDAV "HREF"); return str; } @@ -335,7 +335,7 @@ } -static const char * +static char * e_cal_component_get_etag (ECalComponent *comp) { icalcomponent *icomp; @@ -344,7 +344,7 @@ str = NULL; icomp = e_cal_component_get_icalcomponent (comp); - str = (char *) icomp_x_prop_get (icomp, X_E_CALDAV "ETAG"); + str = icomp_x_prop_get (icomp, X_E_CALDAV "ETAG"); return str; } @@ -1255,13 +1255,13 @@ return; } - hindex = g_hash_table_new (g_str_hash, g_str_equal); + hindex = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); cobjs = e_cal_backend_cache_get_components (bcache); /* build up a index for the href entry */ for (citer = cobjs; citer; citer = g_list_next (citer)) { ECalComponent *ccomp = E_CAL_COMPONENT (citer->data); - const char *href; + char *href; href = e_cal_component_get_href (ccomp); @@ -1276,7 +1276,7 @@ /* see if we have to upate or add some objects */ for (i = 0, object = sobjs; i < len; i++, object++) { ECalComponent *ccomp; - const char *etag = NULL; + char *etag = NULL; if (object->status != 200) { /* just continue here, so that the object @@ -1301,6 +1301,7 @@ } caldav_object_free (object, FALSE); + g_free (etag); } /* remove old (not on server anymore) items from cache */ @@ -1654,7 +1655,7 @@ g_assert (objstr); - return g_strdup (objstr); + return objstr; } @@ -1773,8 +1774,8 @@ if (online) { CalDAVObject object; - object.href = g_strdup (e_cal_component_get_href (cache_comp)); - object.etag = g_strdup (e_cal_component_get_etag (cache_comp)); + object.href = e_cal_component_get_href (cache_comp); + object.etag = e_cal_component_get_etag (cache_comp); object.cdata = pack_cobj (cbdav, comp); status = caldav_server_put_object (cbdav, &object); @@ -1841,8 +1842,8 @@ if (online) { CalDAVObject caldav_object; - caldav_object.href = g_strdup (e_cal_component_get_href (cache_comp)); - caldav_object.etag = g_strdup (e_cal_component_get_etag (cache_comp)); + caldav_object.href = e_cal_component_get_href (cache_comp); + caldav_object.etag = e_cal_component_get_etag (cache_comp); caldav_object.cdata = NULL; status = caldav_server_delete_object (cbdav, &caldav_object); @@ -1973,14 +1974,14 @@ CalDAVObject object = { NULL, }; if (ccomp) { - const char *href; - const char *etag; + char *href; + char *etag; href = e_cal_component_get_href (ccomp); etag = e_cal_component_get_etag (ccomp); - object.href = g_strdup (href); - object.etag = g_strdup (etag); + object.href = href; + object.etag = etag; } else { object.href = e_cal_component_gen_href (ecomp); @@ -2035,14 +2036,14 @@ * of recurring appointments - yet - */ if (online) { CalDAVObject object; - const char *href; - const char *etag; + char *href; + char *etag; href = e_cal_component_get_href (ccomp); etag = e_cal_component_get_etag (ccomp); - object.href = g_strdup (href); - object.etag = g_strdup (etag); + object.href = href; + object.etag = etag; object.cdata = NULL; status = caldav_server_delete_object (cbdav, @@ -2268,7 +2269,7 @@ return GNOME_Evolution_Calendar_InvalidObject; } - *object = g_strdup (icalcomponent_as_ical_string (icalcomp)); + *object = icalcomponent_as_ical_string (icalcomp); return GNOME_Evolution_Calendar_Success; } Modified: trunk/calendar/backends/contacts/e-cal-backend-contacts.c ============================================================================== --- trunk/calendar/backends/contacts/e-cal-backend-contacts.c (original) +++ trunk/calendar/backends/contacts/e-cal-backend-contacts.c Mon Feb 18 07:33:06 2008 @@ -655,7 +655,7 @@ icalcomponent_set_dtend (vfb, icaltime_from_timet_with_zone (end, FALSE, utc_zone)); calobj = icalcomponent_as_ical_string (vfb); - *freebusy = g_list_append (NULL, g_strdup (calobj)); + *freebusy = g_list_append (NULL, calobj); icalcomponent_free (vfb); /* WRITE ME */ @@ -789,7 +789,7 @@ if (!icalcomp) return GNOME_Evolution_Calendar_InvalidObject; - *object = g_strdup (icalcomponent_as_ical_string (icalcomp)); + *object = icalcomponent_as_ical_string (icalcomp); return GNOME_Evolution_Calendar_Success; } Modified: trunk/calendar/backends/file/e-cal-backend-file.c ============================================================================== --- trunk/calendar/backends/file/e-cal-backend-file.c (original) +++ trunk/calendar/backends/file/e-cal-backend-file.c Mon Feb 18 07:33:06 2008 @@ -174,6 +174,7 @@ buf = icalcomponent_as_ical_string (priv->icalcomp); result = gnome_vfs_write (handle, buf, strlen (buf) * sizeof (char), &out); + g_free (buf); gnome_vfs_close (handle); if (result != GNOME_VFS_OK) { gnome_vfs_uri_unref (uri); @@ -735,6 +736,7 @@ e_cal_backend_notify_object_removed (context->backend, id, old_obj_str, NULL); e_cal_component_free_id (id); + g_free (old_obj_str); g_object_unref (comp); } } @@ -763,6 +765,7 @@ return; e_cal_backend_notify_object_created (context->backend, new_obj_str); + g_free (new_obj_str); } else { old_icomp = e_cal_component_get_icalcomponent (old_obj_data->full_object); new_icomp = e_cal_component_get_icalcomponent (new_obj_data->full_object); @@ -779,6 +782,8 @@ e_cal_backend_notify_object_modified (context->backend, old_obj_str, new_obj_str); } + g_free (old_obj_str); + g_free (new_obj_str); } } @@ -1122,7 +1127,7 @@ return GNOME_Evolution_Calendar_ObjectNotFound; } - *object = g_strdup (icalcomponent_as_ical_string (icalcomp)); + *object = icalcomponent_as_ical_string (icalcomp); icalcomponent_free (icalcomp); } @@ -1139,7 +1144,7 @@ /* add all detached recurrences */ g_hash_table_foreach (obj_data->recurrences, (GHFunc) add_detached_recur_to_vcalendar, icalcomp); - *object = g_strdup (icalcomponent_as_ical_string (icalcomp)); + *object = icalcomponent_as_ical_string (icalcomp); icalcomponent_free (icalcomp); } else @@ -1186,7 +1191,7 @@ return GNOME_Evolution_Calendar_InvalidObject; } - *object = g_strdup (icalcomponent_as_ical_string (icalcomp)); + *object = icalcomponent_as_ical_string (icalcomp); g_static_rec_mutex_unlock (&priv->idle_save_rmutex); return GNOME_Evolution_Calendar_Success; @@ -1534,7 +1539,7 @@ if (e_cal_backend_mail_account_get_default (&address, &name)) { vfb = create_user_free_busy (cbfile, address, name, start, end); calobj = icalcomponent_as_ical_string (vfb); - *freebusy = g_list_append (*freebusy, g_strdup (calobj)); + *freebusy = g_list_append (*freebusy, calobj); icalcomponent_free (vfb); g_free (address); g_free (name); @@ -1545,7 +1550,7 @@ if (e_cal_backend_mail_account_is_valid (address, &name)) { vfb = create_user_free_busy (cbfile, address, name, start, end); calobj = icalcomponent_as_ical_string (vfb); - *freebusy = g_list_append (*freebusy, g_strdup (calobj)); + *freebusy = g_list_append (*freebusy, calobj); icalcomponent_free (vfb); g_free (name); } @@ -2552,7 +2557,7 @@ case ICAL_METHOD_CANCEL: if (cancel_received_object (cbfile, subcomp)) { ECalComponentId *id; - object = (char *) icalcomponent_as_ical_string (subcomp); + object = icalcomponent_as_ical_string (subcomp); obj_data = g_hash_table_lookup (priv->comp_uid_hash, uid); if (obj_data) old_object = e_cal_component_get_as_string (obj_data->full_object); @@ -2569,6 +2574,7 @@ e_cal_component_free_id (id); g_free (old_object); + g_free (object); } break; default: Modified: trunk/calendar/backends/google/e-cal-backend-google-utils.c ============================================================================== --- trunk/calendar/backends/google/e-cal-backend-google-utils.c (original) +++ trunk/calendar/backends/google/e-cal-backend-google-utils.c Mon Feb 18 07:33:06 2008 @@ -617,14 +617,14 @@ e_cal_component_get_dtstart (comp, &dt); itt = icaltime_convert_to_zone (*dt.value, default_zone); dt.value = &itt; - temp = g_strdup (get_date (dt)); + temp = get_date (dt); gdata_entry_set_start_time (entry, temp); /* End Time */ e_cal_component_get_dtend (comp, &dt); itt = icaltime_convert_to_zone (*dt.value, default_zone); dt.value = &itt; - temp = g_strdup (get_date (dt)); + temp = get_date (dt); gdata_entry_set_end_time (entry, temp); /* Content / Description */ @@ -815,7 +815,7 @@ gchar * get_date (ECalComponentDateTime dt) { - const char *temp; + char *temp; struct icaltimetype itt; struct icaltimetype *itt_u; gchar *month; @@ -833,8 +833,6 @@ itt.is_daylight = itt_u->is_daylight; itt.zone = itt_u->zone; - temp = icaltime_as_ical_string(itt); - month = (itt.month<10) ? g_strdup_printf("0%d", itt.month):g_strdup_printf ("%d", itt.month); day = (itt.day < 10) ? g_strdup_printf("0%d", itt.day):g_strdup_printf ("%d", itt.day); @@ -842,9 +840,15 @@ minute = (itt.minute<10) ? g_strdup_printf("0%d", itt.minute):g_strdup_printf ("%d", itt.minute); second = (itt.second<10) ? g_strdup_printf ("0%d", itt.second):g_strdup_printf ("%d", itt.second); + /* FIXME not the best way to do this */ temp = g_strdup_printf ("%d-%s-%sT%s:%s:%s.000", itt.year, month, day, hour, minute, second); + g_free (month); + g_free (day); + g_free (hour); + g_free (minute); + g_free (second); - return g_strdup(temp); + return temp; } static gboolean Modified: trunk/calendar/backends/google/e-cal-backend-google.c ============================================================================== --- trunk/calendar/backends/google/e-cal-backend-google.c (original) +++ trunk/calendar/backends/google/e-cal-backend-google.c Mon Feb 18 07:33:06 2008 @@ -247,7 +247,7 @@ if (!icalcomp) return GNOME_Evolution_Calendar_InvalidObject; - *object = g_strdup (icalcomponent_as_ical_string (icalcomp)); + *object = icalcomponent_as_ical_string (icalcomp); return GNOME_Evolution_Calendar_Success; } Modified: trunk/calendar/backends/groupwise/e-cal-backend-groupwise-utils.c ============================================================================== --- trunk/calendar/backends/groupwise/e-cal-backend-groupwise-utils.c (original) +++ trunk/calendar/backends/groupwise/e-cal-backend-groupwise-utils.c Mon Feb 18 07:33:06 2008 @@ -170,33 +170,36 @@ e_gw_item_set_reply_request (item, TRUE); x_val = icalproperty_get_x (icalprop); if (strcmp (x_val, "convenient")) { - const char *value; + char *value; int i = atoi (x_val); temp = icaltime_current_time_with_zone (default_zone ? default_zone : utc); icaltime_adjust (&temp, i, 0, 0, 0); icaltime_set_timezone (&temp, default_zone); temp = icaltime_convert_to_zone (temp, utc); value = icaltime_as_ical_string (temp); - e_gw_item_set_reply_within (item, (char *) value); + e_gw_item_set_reply_within (item, value); + g_free (value); } } else if (!strcmp (x_name, "X-EVOLUTION-OPTIONS-EXPIRE")) { - const char *expire = NULL; + char *expire = NULL; x_val = icalproperty_get_x (icalprop); temp = icaltime_current_time_with_zone (default_zone ? default_zone : utc); icaltime_adjust (&temp, atoi (x_val), 0, 0, 0); icaltime_set_timezone (&temp, default_zone); temp = icaltime_convert_to_zone (temp, utc); expire = icaltime_as_ical_string (temp); - e_gw_item_set_expires (item, (char *) expire); + e_gw_item_set_expires (item, expire); + g_free (expire); } else if (!strcmp (x_name, "X-EVOLUTION-OPTIONS-DELAY")) { - const char *delay = NULL; + char *delay = NULL; x_val = icalproperty_get_x (icalprop); temp = icaltime_from_string (x_val); icaltime_set_timezone (&temp, default_zone); temp = icaltime_convert_to_zone (temp, utc); delay = icaltime_as_ical_string (temp); - e_gw_item_set_delay_until (item, (char *) delay); + e_gw_item_set_delay_until (item, delay); + g_free (delay); } else if (!strcmp (x_name, "X-EVOLUTION-OPTIONS-TRACKINFO")) { sendoptions_set = TRUE; @@ -458,7 +461,6 @@ /* assumes only one rrule is present */ ical_recur = (struct icalrecurrencetype *) rrule_list->data; - g_message ("DEBUG: Processing rule\n%s\n", icalrecurrencetype_as_string (ical_recur)); /*set the data */ switch (ical_recur->freq) { case ICAL_DAILY_RECURRENCE : @@ -479,7 +481,7 @@ if (ical_recur->count != 0) item_rrule->count = ical_recur->count; else - item_rrule->until = g_strdup (icaltime_as_ical_string (ical_recur->until)); + item_rrule->until = icaltime_as_ical_string (ical_recur->until); item_rrule->interval = ical_recur->interval; @@ -511,7 +513,7 @@ if (!icaltime_get_timezone (*(dt->value))) icaltime_set_timezone (dt->value, default_zone ? default_zone : utc); itt_utc = icaltime_convert_to_zone (*dt->value, utc); - item_exdate_list = g_slist_append (item_exdate_list, g_strdup (icaltime_as_ical_string (itt_utc))); + item_exdate_list = g_slist_append (item_exdate_list, icaltime_as_ical_string (itt_utc)); } } e_gw_item_set_exdate_list (item, item_exdate_list); @@ -524,6 +526,7 @@ set_properties_from_cal_component (EGwItem *item, ECalComponent *comp, ECalBackendGroupwise *cbgw) { const char *uid, *location; + char *value; ECalComponentDateTime dt; ECalComponentClassification classif; ECalComponentTransparency transp; @@ -581,7 +584,9 @@ if (!icaltime_get_timezone (*dt.value)) icaltime_set_timezone (dt.value, default_zone ? default_zone : utc); itt_utc = icaltime_convert_to_zone (*dt.value, utc); - e_gw_item_set_end_date (item, icaltime_as_ical_string (itt_utc)); + value = icaltime_as_ical_string (itt_utc); + e_gw_item_set_end_date (item, value); + g_free (value); e_cal_component_free_datetime (&dt); } @@ -596,7 +601,9 @@ if (!icaltime_get_timezone (*dt.value)) icaltime_set_timezone (dt.value, default_zone); itt_utc = icaltime_convert_to_zone (*dt.value, utc); - e_gw_item_set_due_date (item, icaltime_as_ical_string (itt_utc)); + value = icaltime_as_ical_string (itt_utc); + e_gw_item_set_due_date (item, value); + g_free (value); e_cal_component_free_datetime (&dt); } @@ -672,7 +679,9 @@ if (!icaltime_get_timezone (*dt.value)) icaltime_set_timezone (dt.value, default_zone); itt_utc = icaltime_convert_to_zone (*dt.value, utc); - e_gw_item_set_start_date (item, icaltime_as_ical_string (itt_utc)); + value = icaltime_as_ical_string (itt_utc); + e_gw_item_set_start_date (item, value); + g_free (value); } else if (e_gw_item_get_item_type (item) == E_GW_ITEM_TYPE_APPOINTMENT) { e_cal_component_free_datetime (&dt); /* appointments need the start date property */ @@ -693,12 +702,16 @@ if (!icaltime_get_timezone (*dt.value)) icaltime_set_timezone (dt.value, default_zone); itt_utc = icaltime_convert_to_zone (*dt.value, utc); - e_gw_item_set_creation_date (item, icaltime_as_ical_string (itt_utc)); + value = icaltime_as_ical_string (itt_utc); + e_gw_item_set_creation_date (item, value); + g_free (value); } else { struct icaltimetype itt; e_cal_component_get_dtstamp (comp, &itt); - e_gw_item_set_creation_date (item, icaltime_as_ical_string (itt)); + value = icaltime_as_ical_string (itt); + e_gw_item_set_creation_date (item, value); + g_free (value); } e_cal_component_free_icaltimetype (dt.value); @@ -1556,7 +1569,7 @@ GList *l; icaltimetype icaltime; icaltimezone *utc; - const char *start_date, *end_date; + char *start_date, *end_date; if (users == NULL) return E_GW_CONNECTION_STATUS_INVALID_OBJECT; @@ -1587,6 +1600,8 @@ e_gw_message_write_string_parameter (msg, "startDate", NULL, start_date); e_gw_message_write_string_parameter (msg, "endDate", NULL, end_date); + g_free (start_date); + g_free (end_date); e_gw_message_write_footer (msg); @@ -2026,7 +2041,7 @@ /* Delay delivery */ if (gopts->delay_enabled) { - const char *value; + char *value; tt = icaltime_today (); icaltime_adjust (&tt, gopts->delay_until, 0, 0, 0); value = icaltime_as_ical_string (tt); Modified: trunk/calendar/backends/groupwise/e-cal-backend-groupwise.c ============================================================================== --- trunk/calendar/backends/groupwise/e-cal-backend-groupwise.c (original) +++ trunk/calendar/backends/groupwise/e-cal-backend-groupwise.c Mon Feb 18 07:33:06 2008 @@ -540,14 +540,17 @@ if (calid->recur_key && calid->ical_id) { const char *rid = NULL; + char *temp; icaltimetype tt = icaltime_from_string (calid->ical_id); if (!tt.is_date) { tt = icaltime_convert_to_zone (tt, priv->default_zone); icaltime_set_timezone (&tt, priv->default_zone); rid = icaltime_as_ical_string (tt); + temp = rid; } else rid = calid->ical_id; real_key = g_strconcat (calid->recur_key, "@", rid, NULL); + g_free (temp); } if (!calid->recur_key || real_key) { @@ -1545,7 +1548,7 @@ if (!icalcomp) return GNOME_Evolution_Calendar_InvalidObject; - *object = g_strdup (icalcomponent_as_ical_string (icalcomp)); + *object = icalcomponent_as_ical_string (icalcomp); return GNOME_Evolution_Calendar_Success; } Modified: trunk/calendar/backends/http/e-cal-backend-http.c ============================================================================== --- trunk/calendar/backends/http/e-cal-backend-http.c (original) +++ trunk/calendar/backends/http/e-cal-backend-http.c Mon Feb 18 07:33:06 2008 @@ -333,19 +333,24 @@ comp = e_cal_component_new (); if (e_cal_component_set_icalcomponent (comp, icalcomponent_new_clone (subcomp))) { const char *uid, *orig_key, *orig_value; + char *obj; e_cal_backend_cache_put_component (priv->cache, comp); e_cal_component_get_uid (comp, &uid); /* middle (void*) cast only because of 'dereferencing type-punned pointer will break strict-aliasing rules' */ if (g_hash_table_lookup_extended (old_cache, uid, (void **)(void*)&orig_key, (void **)(void*)&orig_value)) { + obj = icalcomponent_as_ical_string (subcomp); e_cal_backend_notify_object_modified (E_CAL_BACKEND (cbhttp), orig_value, - icalcomponent_as_ical_string (subcomp)); + obj); + g_free (obj); g_hash_table_remove (old_cache, uid); } else { + obj = icalcomponent_as_ical_string (subcomp); e_cal_backend_notify_object_created (E_CAL_BACKEND (cbhttp), - icalcomponent_as_ical_string (subcomp)); + obj); + g_free (obj); } } @@ -688,7 +693,7 @@ kind = e_cal_backend_get_kind (E_CAL_BACKEND (backend)); icalcomp = e_cal_util_new_component (kind); - *object = g_strdup (icalcomponent_as_ical_string (icalcomp)); + *object = icalcomponent_as_ical_string (icalcomp); icalcomponent_free (icalcomp); return GNOME_Evolution_Calendar_Success; @@ -746,7 +751,7 @@ if (!icalcomp) return GNOME_Evolution_Calendar_InvalidObject; - *object = g_strdup (icalcomponent_as_ical_string (icalcomp)); + *object = icalcomponent_as_ical_string (icalcomp); return GNOME_Evolution_Calendar_Success; } @@ -1048,7 +1053,7 @@ if (e_cal_backend_mail_account_get_default (&address, &name)) { vfb = create_user_free_busy (cbhttp, address, name, start, end); calobj = icalcomponent_as_ical_string (vfb); - *freebusy = g_list_append (*freebusy, g_strdup (calobj)); + *freebusy = g_list_append (*freebusy, calobj); icalcomponent_free (vfb); g_free (address); g_free (name); @@ -1060,7 +1065,7 @@ if (e_cal_backend_mail_account_is_valid (address, &name)) { vfb = create_user_free_busy (cbhttp, address, name, start, end); calobj = icalcomponent_as_ical_string (vfb); - *freebusy = g_list_append (*freebusy, g_strdup (calobj)); + *freebusy = g_list_append (*freebusy, calobj); icalcomponent_free (vfb); g_free (name); } Modified: trunk/calendar/backends/weather/e-cal-backend-weather.c ============================================================================== --- trunk/calendar/backends/weather/e-cal-backend-weather.c (original) +++ trunk/calendar/backends/weather/e-cal-backend-weather.c Mon Feb 18 07:33:06 2008 @@ -149,26 +149,32 @@ l = e_cal_backend_cache_get_components (priv->cache); for (; l != NULL; l = g_list_next (l)) { ECalComponentId *id; + char *obj; icomp = e_cal_component_get_icalcomponent (E_CAL_COMPONENT (l->data)); id = e_cal_component_get_id (E_CAL_COMPONENT (l->data)); + obj = icalcomponent_as_ical_string (icomp); e_cal_backend_notify_object_removed (E_CAL_BACKEND (cbw), id, - icalcomponent_as_ical_string (icomp), + obj, NULL); e_cal_component_free_id (id); + g_free (obj); g_object_unref (G_OBJECT (l->data)); } g_list_free (l); e_file_cache_clean (E_FILE_CACHE (priv->cache)); for (l = forecasts; l != NULL; l = g_list_next (l)) { + char *obj; comp = create_weather (cbw, l->data); e_cal_backend_cache_put_component (priv->cache, comp); icomp = e_cal_component_get_icalcomponent (comp); - e_cal_backend_notify_object_created (E_CAL_BACKEND (cbw), icalcomponent_as_ical_string (icomp)); + obj = icalcomponent_as_ical_string (icomp); + e_cal_backend_notify_object_created (E_CAL_BACKEND (cbw), obj); + g_free (obj); } priv->is_loading = FALSE; @@ -579,7 +585,7 @@ if (!icalcomp) return GNOME_Evolution_Calendar_InvalidObject; - *object = g_strdup (icalcomponent_as_ical_string (icalcomp)); + *object = icalcomponent_as_ical_string (icalcomp); return GNOME_Evolution_Calendar_Success; } @@ -662,7 +668,7 @@ icalcomponent_set_dtend (vfb, icaltime_from_timet_with_zone (end, FALSE, utc_zone)); calobj = icalcomponent_as_ical_string (vfb); - *freebusy = g_list_append (NULL, g_strdup (calobj)); + *freebusy = g_list_append (NULL, calobj); icalcomponent_free (vfb); return GNOME_Evolution_Calendar_Success; Modified: trunk/calendar/libecal/e-cal-component.c ============================================================================== --- trunk/calendar/libecal/e-cal-component.c (original) +++ trunk/calendar/libecal/e-cal-component.c Mon Feb 18 07:33:06 2008 @@ -1245,7 +1245,7 @@ e_cal_component_get_as_string (ECalComponent *comp) { ECalComponentPrivate *priv; - char *str, *buf; + char *str; g_return_val_if_fail (comp != NULL, NULL); g_return_val_if_fail (E_IS_CAL_COMPONENT (comp), NULL); @@ -1256,16 +1256,9 @@ /* Ensure that the user has committed the new SEQUENCE */ g_return_val_if_fail (priv->need_sequence_inc == FALSE, NULL); - /* We dup the string; libical owns that memory */ - str = icalcomponent_as_ical_string (priv->icalcomp); - if (str) - buf = g_strdup (str); - else - buf = NULL; - - return buf; + return str; } /* Used from g_hash_table_foreach(); ensures that an alarm subcomponent @@ -3568,7 +3561,7 @@ * * Return value: the recurrence ID as a string. */ -const char * +char * e_cal_component_get_recurid_as_string (ECalComponent *comp) { ECalComponentRange range; @@ -3584,7 +3577,7 @@ e_cal_component_free_range (&range); return icaltime_is_valid_time (tt) && !icaltime_is_null_time (tt) ? - icaltime_as_ical_string (tt) : "0"; + icaltime_as_ical_string (tt) : g_strdup ("0"); } /** Modified: trunk/calendar/libecal/e-cal-component.h ============================================================================== --- trunk/calendar/libecal/e-cal-component.h (original) +++ trunk/calendar/libecal/e-cal-component.h Mon Feb 18 07:33:06 2008 @@ -292,7 +292,7 @@ void e_cal_component_set_priority (ECalComponent *comp, int *priority); void e_cal_component_get_recurid (ECalComponent *comp, ECalComponentRange *recur_id); -const char *e_cal_component_get_recurid_as_string (ECalComponent *comp); +char *e_cal_component_get_recurid_as_string (ECalComponent *comp); void e_cal_component_set_recurid (ECalComponent *comp, ECalComponentRange *recur_id); void e_cal_component_get_rdate_list (ECalComponent *comp, GSList **period_list); Modified: trunk/calendar/libecal/e-cal-recur.c ============================================================================== --- trunk/calendar/libecal/e-cal-recur.c (original) +++ trunk/calendar/libecal/e-cal-recur.c Mon Feb 18 07:33:06 2008 @@ -3997,7 +3997,8 @@ icalvalue *value; icaltimezone *utc_zone; struct icaltimetype icaltime; - const char *end_date_string, *xname; + const char *xname; + char *end_date_string; /* We save the value as a UTC DATE-TIME. */ utc_zone = icaltimezone_get_utc_timezone (); @@ -4022,6 +4023,8 @@ param = icalparameter_new_x (end_date_string); icalparameter_set_xname (param, EVOLUTION_END_DATE_PARAMETER); icalproperty_add_parameter (prop, param); + + g_free (end_date_string); } #ifdef G_OS_WIN32 Modified: trunk/calendar/libecal/e-cal.c ============================================================================== --- trunk/calendar/libecal/e-cal.c (original) +++ trunk/calendar/libecal/e-cal.c Mon Feb 18 07:33:06 2008 @@ -4093,7 +4093,7 @@ vtimezone_as_string = icalcomponent_as_ical_string (vtimezone_comp); g_hash_table_insert (data->timezone_hash, (char*) tzid, - g_strdup (vtimezone_as_string)); + vtimezone_as_string); } /* This appends the value string to the GString given in data. */ @@ -4171,7 +4171,7 @@ vcal_string); /* Get the string for the VEVENT/VTODO. */ - obj_string = g_strdup (icalcomponent_as_ical_string (icalcomp)); + obj_string = icalcomponent_as_ical_string (icalcomp); /* If there were any timezones to send, create a complete VCALENDAR, else just send the VEVENT/VTODO string. */ @@ -4228,6 +4228,7 @@ CORBA_Environment ev; ECalendarStatus status; ECalendarOp *our_op; + char *obj; e_return_error_if_fail (ecal && E_IS_CAL (ecal), E_CALENDAR_STATUS_INVALID_ARG); @@ -4251,10 +4252,12 @@ CORBA_exception_init (&ev); - GNOME_Evolution_Calendar_Cal_createObject (priv->cal, icalcomponent_as_ical_string (icalcomp), &ev); + obj = icalcomponent_as_ical_string (icalcomp); + GNOME_Evolution_Calendar_Cal_createObject (priv->cal, obj, &ev); if (BONOBO_EX (&ev)) { e_calendar_remove_op (ecal, our_op); e_calendar_free_op (our_op); + g_free (obj); CORBA_exception_free (&ev); @@ -4263,6 +4266,7 @@ E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_CORBA_EXCEPTION, error); } + g_free (obj); CORBA_exception_free (&ev); e_flag_wait (our_op->done); @@ -4304,6 +4308,7 @@ CORBA_Environment ev; ECalendarStatus status; ECalendarOp *our_op; + char *obj; e_return_error_if_fail (ecal && E_IS_CAL (ecal), E_CALENDAR_STATUS_INVALID_ARG); e_return_error_if_fail (icalcomp, E_CALENDAR_STATUS_INVALID_ARG); @@ -4328,10 +4333,12 @@ CORBA_exception_init (&ev); - GNOME_Evolution_Calendar_Cal_modifyObject (priv->cal, icalcomponent_as_ical_string (icalcomp), mod, &ev); + obj = icalcomponent_as_ical_string (icalcomp); + GNOME_Evolution_Calendar_Cal_modifyObject (priv->cal, obj, mod, &ev); if (BONOBO_EX (&ev)) { e_calendar_remove_op (ecal, our_op); e_calendar_free_op (our_op); + g_free (obj); CORBA_exception_free (&ev); @@ -4340,6 +4347,7 @@ E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_CORBA_EXCEPTION, error); } + g_free (obj); CORBA_exception_free (&ev); e_flag_wait (our_op->done); @@ -4468,6 +4476,7 @@ CORBA_Environment ev; ECalendarStatus status; ECalendarOp *our_op; + char *obj; e_return_error_if_fail (ecal && E_IS_CAL (ecal), E_CALENDAR_STATUS_INVALID_ARG); @@ -4491,10 +4500,12 @@ CORBA_exception_init (&ev); - GNOME_Evolution_Calendar_Cal_receiveObjects (priv->cal, icalcomponent_as_ical_string (icalcomp), &ev); + obj = icalcomponent_as_ical_string (icalcomp); + GNOME_Evolution_Calendar_Cal_receiveObjects (priv->cal, obj, &ev); if (BONOBO_EX (&ev)) { e_calendar_remove_op (ecal, our_op); e_calendar_free_op (our_op); + g_free (obj); CORBA_exception_free (&ev); @@ -4503,6 +4514,7 @@ E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_CORBA_EXCEPTION, error); } + g_free (obj); CORBA_exception_free (&ev); e_flag_wait (our_op->done); @@ -4536,6 +4548,7 @@ CORBA_Environment ev; ECalendarStatus status; ECalendarOp *our_op; + char *obj; e_return_error_if_fail (ecal && E_IS_CAL (ecal), E_CALENDAR_STATUS_INVALID_ARG); @@ -4559,10 +4572,12 @@ CORBA_exception_init (&ev); - GNOME_Evolution_Calendar_Cal_sendObjects (priv->cal, icalcomponent_as_ical_string (icalcomp), &ev); + obj = icalcomponent_as_ical_string (icalcomp); + GNOME_Evolution_Calendar_Cal_sendObjects (priv->cal, obj, &ev); if (BONOBO_EX (&ev)) { e_calendar_remove_op (ecal, our_op); e_calendar_free_op (our_op); + g_free (obj); CORBA_exception_free (&ev); @@ -4571,6 +4586,7 @@ E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_CORBA_EXCEPTION, error); } + g_free (obj); CORBA_exception_free (&ev); e_flag_wait (our_op->done); @@ -4740,7 +4756,7 @@ CORBA_Environment ev; ECalendarStatus status; ECalendarOp *our_op; - const char *tzobj; + char *tzobj; icalcomponent *icalcomp; e_return_error_if_fail (ecal && E_IS_CAL (ecal), E_CALENDAR_STATUS_INVALID_ARG); @@ -4791,6 +4807,7 @@ if (BONOBO_EX (&ev)) { e_calendar_remove_op (ecal, our_op); e_calendar_free_op (our_op); + g_free (tzobj); CORBA_exception_free (&ev); @@ -4799,6 +4816,7 @@ E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_CORBA_EXCEPTION, error); } + g_free (tzobj); CORBA_exception_free (&ev); e_flag_wait (our_op->done); @@ -4940,6 +4958,7 @@ if (BONOBO_EX (&ev)) { e_calendar_remove_op (ecal, our_op); e_calendar_free_op (our_op); + g_free (tzobj); CORBA_exception_free (&ev); @@ -4948,6 +4967,7 @@ E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_CORBA_EXCEPTION, error); } + g_free (tzobj); CORBA_exception_free (&ev); e_flag_wait (our_op->done); Modified: trunk/calendar/libedata-cal/e-cal-backend-cache.c ============================================================================== --- trunk/calendar/libedata-cal/e-cal-backend-cache.c (original) +++ trunk/calendar/libedata-cal/e-cal-backend-cache.c Mon Feb 18 07:33:06 2008 @@ -377,7 +377,7 @@ ECalComponent *comp) { char *real_key, *uid, *comp_str; - const char *rid; + char *rid; gboolean retval; ECalBackendCachePrivate *priv; @@ -402,6 +402,7 @@ g_free (real_key); g_free (comp_str); + g_free (rid); return retval; } @@ -605,6 +606,7 @@ icaltimezone *new_zone; icalcomponent *icalcomp; gboolean retval; + char *obj; g_return_val_if_fail (E_IS_CAL_BACKEND_CACHE (cache), FALSE); g_return_val_if_fail (zone != NULL, FALSE); @@ -616,15 +618,17 @@ if (!icalcomp) return FALSE; + obj = icalcomponent_as_ical_string (icalcomp); if (e_file_cache_get_object (E_FILE_CACHE (cache), icaltimezone_get_tzid ((icaltimezone *)zone))) { retval = e_file_cache_replace_object (E_FILE_CACHE (cache), icaltimezone_get_tzid ((icaltimezone *)zone), - icalcomponent_as_ical_string (icalcomp)); + obj); } else { retval = e_file_cache_add_object (E_FILE_CACHE (cache), icaltimezone_get_tzid ((icaltimezone *)zone), - icalcomponent_as_ical_string (icalcomp)); + obj); } + g_free (obj); if (!retval) return FALSE; @@ -652,6 +656,7 @@ ECalBackendCachePrivate *priv; icalcomponent *icalcomp; gboolean retval; + char *obj; g_return_val_if_fail (E_IS_CAL_BACKEND_CACHE (cache), FALSE); @@ -662,14 +667,16 @@ if (!icalcomp) return FALSE; + obj = icalcomponent_as_ical_string (icalcomp); if (e_file_cache_get_object (E_FILE_CACHE (cache), "default_zone")) { retval = e_file_cache_replace_object (E_FILE_CACHE (cache), "default_zone", - icalcomponent_as_ical_string (icalcomp)); + obj); } else { retval = e_file_cache_add_object (E_FILE_CACHE (cache), "default_zone", - icalcomponent_as_ical_string (icalcomp)); + obj); } + g_free (obj); if (!retval) return FALSE; Modified: trunk/calendar/libedata-cal/e-data-cal-view.c ============================================================================== --- trunk/calendar/libedata-cal/e-data-cal-view.c (original) +++ trunk/calendar/libedata-cal/e-data-cal-view.c Mon Feb 18 07:33:06 2008 @@ -102,9 +102,12 @@ return; } - if (e_cal_component_is_instance (comp)) - real_uid = g_strdup_printf ("[EMAIL PROTECTED]", uid, e_cal_component_get_recurid_as_string (comp)); - else + if (e_cal_component_is_instance (comp)) { + char *str; + str = e_cal_component_get_recurid_as_string (comp) ; + real_uid = g_strdup_printf ("[EMAIL PROTECTED]", uid, str); + g_free (str); + } else real_uid = g_strdup (uid); if (g_hash_table_lookup (priv->matched_objects, real_uid)) Modified: trunk/calendar/tests/ecal/test-ecal.c ============================================================================== --- trunk/calendar/tests/ecal/test-ecal.c (original) +++ trunk/calendar/tests/ecal/test-ecal.c Mon Feb 18 07:33:06 2008 @@ -116,9 +116,11 @@ printf ("\n"); for (l = objects; l; l = l->next) { + char *obj = icalcomponent_as_ical_string (l->data); printf ("------------------------------\n"); - printf ("%s", icalcomponent_as_ical_string (l->data)); + printf ("%s", obj); printf ("------------------------------\n"); + free (obj); } } _______________________________________________ SVN-commits-list mailing list (read only) http://mail.gnome.org/mailman/listinfo/svn-commits-list Want to limit the commits to a few modules? Go to above URL, log in to edit your options and select the modules ('topics') you want. Module maintainer? It is possible to set the reply-to to your development mailing list. Email [EMAIL PROTECTED] if interested.