Skip to content
Commits on Source (9)
......@@ -4,7 +4,7 @@ cmake_minimum_required(VERSION 3.1)
cmake_policy(VERSION 3.1)
project(evolution-data-server
VERSION 3.42.2
VERSION 3.42.3
LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 14)
set(PROJECT_BUGREPORT "https://gitlab.gnome.org/GNOME/evolution-data-server/issues/")
......@@ -145,6 +145,7 @@ include(CheckCSourceRuns)
include(CheckFunctionExists)
include(CheckIncludeFile)
include(CheckLibraryExists)
include(CheckTypeSize)
# Project custom modules
include(PrintableOptions)
......@@ -974,6 +975,13 @@ if(ENABLE_VALA_BINDINGS)
endif(ENABLE_VALA_BINDINGS)
set(CMAKE_EXTRA_INCLUDE_FILES "time.h")
CHECK_TYPE_SIZE("time_t" SIZEOF_TIME_T)
if("${SIZEOF_TIME_T}" STREQUAL "4")
set(HAVE_32BIT_TIME_T 1)
endif("${SIZEOF_TIME_T}" STREQUAL "4")
unset(CMAKE_EXTRA_INCLUDE_FILES)
# Generate the ${PROJECT_NAME}-config.h file
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/config.h.in ${CMAKE_BINARY_DIR}/${PROJECT_NAME}-config.h)
......
Evolution-Data-Server 3.42.3 2022-01-07
---------------------------------------
Bug Fixes:
I#368 - Calendar: X-EVOLUTION-ENDDATE can be calculated incorrectly
I#371 - e-cal-util: Fix timezone clamp with DUE date only
Miscellaneous:
e-cal-client: Correct non-NULL check in e_cal_client_create_objects_sync()
Calendar: Adapt to libical 3.0.12 change
Translations:
Gianvito Cavasoli (it)
Quentin PAGÈS (oc)
Evolution-Data-Server 3.42.2 2021-12-03
---------------------------------------
Bug Fixes:
I#364 - Camel: Add a missing header include into camel-hostname-utils.c (Milan Crha)
I#365 - Calendar: Crash on local calandar file change (Milan Crha)
I#366 - Calendar: Correct 'occur-in-time-range?' for zero-length events (Milan Crha)
I#364 - Camel: Add a missing header include into camel-hostname-utils.c
I#365 - Calendar: Crash on local calandar file change
I#366 - Calendar: Correct 'occur-in-time-range?' for zero-length events
Translations:
Christian Kirbach (de)
......@@ -14,20 +29,20 @@ Evolution-Data-Server 3.42.1 2021-10-29
---------------------------------------
Bug Fixes:
I#352 - LDAP: Claim capabilities change on "sync for offline" change (Milan Crha)
I#355 - Camel: Ignore empty output from "Pipe to program" filter (Milan Crha)
I#360 - WebDAVNotes: Recognize and prefer files with .md extension (Milan Crha)
I#361 - Camel: Understand non-standard "Content-Transfer-Encoding: uuencode" (Milan Crha)
I#352 - LDAP: Claim capabilities change on "sync for offline" change
I#355 - Camel: Ignore empty output from "Pipe to program" filter
I#360 - WebDAVNotes: Recognize and prefer files with .md extension
I#361 - Camel: Understand non-standard "Content-Transfer-Encoding: uuencode"
M!81 - Camel-SMTP: accept any 2xx code on MAIL FROM: as success (Дилян Палаузов)
evo-I#1621 - Prevent IDN homograph attacks (Milan Crha)
evo-I#1621 - Prevent IDN homograph attacks
Miscellaneous:
LDAP: Fix a memory leak when filling a contact address (Milan Crha)
book/cal-backend: Add some safety checks around pending_operations queue (Milan Crha)
Correct 'Since:' tag in the developer comments (Milan Crha)
ERemindersWidget: Incorrect value for last selected snooze time after open (Milan Crha)
Camel: Correct a copy&paste error in a function documentation (Milan Crha)
org.gnome.Evolution-alarm-notify.desktop: Add X-GNOME-UsesNotifications=true (Milan Crha)
LDAP: Fix a memory leak when filling a contact address
book/cal-backend: Add some safety checks around pending_operations queue
Correct 'Since:' tag in the developer comments
ERemindersWidget: Incorrect value for last selected snooze time after open
Camel: Correct a copy&paste error in a function documentation
org.gnome.Evolution-alarm-notify.desktop: Add X-GNOME-UsesNotifications=true
Translations:
Boyuan Yang (zh_CN)
......
......@@ -202,3 +202,6 @@
/* Whether glib provides GPowerProfileMonitor */
#cmakedefine HAVE_GPOWERPROFILEMONITOR 1
/* Defined, when time_t is of the 32bit size */
#cmakedefine HAVE_32BIT_TIME_T 1
This diff is collapsed.
This diff is collapsed.
......@@ -4791,7 +4791,7 @@ e_cal_client_create_objects_finish (ECalClient *client,
* @client: an #ECalClient
* @icalcomps: (element-type ICalComponent): The components to create
* @opflags: (type ECalOperationFlags): bit-or of #ECalOperationFlags
* @out_uids: (out) (nullable) (element-type utf8): Return value for the UIDs assigned
* @out_uids: (out) (optional) (element-type utf8): Return value for the UIDs assigned
* to the new components by the calendar backend
* @cancellable: a #GCancellable; can be %NULL
* @error: a #GError to set an error, if any
......@@ -4822,7 +4822,6 @@ e_cal_client_create_objects_sync (ECalClient *client,
g_return_val_if_fail (E_IS_CAL_CLIENT (client), FALSE);
g_return_val_if_fail (icalcomps != NULL, FALSE);
g_return_val_if_fail (out_uids != NULL, FALSE);
strv = g_new0 (gchar *, g_slist_length (icalcomps) + 1);
while (icalcomps != NULL) {
......
......@@ -423,7 +423,7 @@ e_cal_recur_generate_instances_sync (ICalComponent *icalcomp,
get_tz_callback, get_tz_callback_user_data, default_timezone, &cached_zones, cancellable, error);
duration_seconds = 0;
dtend = i_cal_component_get_dtend (icalcomp);
dtend = i_cal_component_isa (icalcomp) == I_CAL_VEVENT_COMPONENT ? i_cal_component_get_dtend (icalcomp) : NULL;
if (!dtend || i_cal_time_is_null_time (dtend)) {
g_clear_object (&dtend);
......@@ -900,10 +900,14 @@ e_cal_recur_generate_instances_sync (ICalComponent *icalcomp,
* spec.
*/
#ifdef HAVE_32BIT_TIME_T
/* This is the maximum year we will go up to (inclusive). Since we use time_t
* values we can't go past 2037 anyway, and some of our VTIMEZONEs may stop
* at 2037 as well. */
#define MAX_YEAR 2037
#else
#define MAX_YEAR 9999
#endif
/* Define this for some debugging output. */
#if 0
......@@ -4859,6 +4863,11 @@ e_cal_recur_set_rule_end_date (ICalProperty *prop,
const gchar *xname;
gchar *end_date_string;
if (end_date <= 0) {
i_cal_property_remove_parameter_by_name (prop, E_CAL_EVOLUTION_ENDDATE_PARAMETER);
return;
}
/* We save the value as a UTC DATE-TIME. */
utc_zone = i_cal_timezone_get_utc_timezone ();
icaltime = i_cal_time_new_from_timet_with_zone (end_date, FALSE, utc_zone);
......
......@@ -3100,9 +3100,16 @@ e_cal_util_clamp_vtimezone (ICalComponent *vtimezone,
g_return_if_fail (I_CAL_IS_COMPONENT (vtimezone));
g_return_if_fail (i_cal_component_isa (vtimezone) == I_CAL_VTIMEZONE_COMPONENT);
g_return_if_fail (I_CAL_IS_TIME ((ICalTime *) from));
if (to)
if (to) {
g_return_if_fail (I_CAL_IS_TIME ((ICalTime *) to));
if (i_cal_time_is_null_time (to) || !i_cal_time_is_valid_time (to))
to = NULL;
}
if (i_cal_time_is_null_time (from) || !i_cal_time_is_valid_time (from))
return;
e_cal_util_clamp_vtimezone_subcomps (vtimezone, I_CAL_XSTANDARD_COMPONENT, from, to);
e_cal_util_clamp_vtimezone_subcomps (vtimezone, I_CAL_XDAYLIGHT_COMPONENT, from, to);
}
......@@ -3138,7 +3145,14 @@ e_cal_util_clamp_vtimezone_by_component (ICalComponent *vtimezone,
recurid = i_cal_property_get_recurrenceid (prop);
dtend = i_cal_component_get_dtend (component);
dtend = i_cal_component_isa (component) == I_CAL_VEVENT_COMPONENT ? i_cal_component_get_dtend (component) : NULL;
if (dtend && (i_cal_time_is_null_time (dtend) || !i_cal_time_is_valid_time (dtend)))
g_clear_object (&dtend);
if (!dtend)
dtend = i_cal_component_get_due (component);
if (dtend && i_cal_time_compare (recurid, dtend) >= 0) {
g_clear_object (&dtend);
dtend = recurid;
......@@ -3148,11 +3162,28 @@ e_cal_util_clamp_vtimezone_by_component (ICalComponent *vtimezone,
g_clear_object (&recurid);
g_object_unref (prop);
} else if (!e_cal_util_component_has_rrules (component)) {
dtend = i_cal_component_get_dtend (component);
dtend = i_cal_component_isa (component) == I_CAL_VEVENT_COMPONENT ? i_cal_component_get_dtend (component) : NULL;
if (dtend && (i_cal_time_is_null_time (dtend) || !i_cal_time_is_valid_time (dtend)))
g_clear_object (&dtend);
if (!dtend)
dtend = i_cal_component_get_due (component);
if (dtend && (i_cal_time_is_null_time (dtend) || !i_cal_time_is_valid_time (dtend)))
g_clear_object (&dtend);
if (!dtend)
dtend = g_object_ref (dtstart);
}
if (i_cal_time_is_null_time (dtstart) || !i_cal_time_is_valid_time (dtstart)) {
g_clear_object (&dtstart);
if (dtend && !i_cal_time_is_null_time (dtend) && i_cal_time_is_valid_time (dtend))
dtstart = g_object_ref (dtend);
}
e_cal_util_clamp_vtimezone (vtimezone, dtstart, dtend);
g_clear_object (&dtstart);
......
......@@ -203,6 +203,21 @@ test_clamp_vtimezone (ETestServerFixture *fixture,
g_object_unref (comp);
g_object_unref (vtimezone);
vtimezone = i_cal_component_new_from_string (vtimezone_str);
comp = i_cal_component_new_from_string (
"BEGIN:VTODO\r\n"
"UID:1\r\n"
"DUE:19821004T080000Z\r\n"
"END:VTODO\r\n");
g_assert_nonnull (comp);
e_cal_util_clamp_vtimezone_by_component (vtimezone, comp);
g_assert_cmpint (i_cal_component_count_components (vtimezone, I_CAL_XDAYLIGHT_COMPONENT), ==, 1);
g_assert_cmpint (i_cal_component_count_components (vtimezone, I_CAL_XSTANDARD_COMPONENT), ==, 1);
g_object_unref (comp);
g_object_unref (vtimezone);
}
gint
......