summaryrefslogtreecommitdiff
path: root/src/libical/icalderivedvalue.c.in
diff options
context:
space:
mode:
Diffstat (limited to 'src/libical/icalderivedvalue.c.in')
-rw-r--r--src/libical/icalderivedvalue.c.in6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/libical/icalderivedvalue.c.in b/src/libical/icalderivedvalue.c.in
index 2727e0b4..34c5488a 100644
--- a/src/libical/icalderivedvalue.c.in
+++ b/src/libical/icalderivedvalue.c.in
@@ -28,6 +28,7 @@
#include "icalvalueimpl.h"
#include "icalerror.h"
#include "icalmemory.h"
+#include "icaltimezone.h"
#include <errno.h>
#include <stdlib.h>
@@ -299,6 +300,11 @@ void icalvalue_set_datetimedate(icalvalue *value, struct icaltimetype v)
impl = (struct icalvalue_impl *)value;
impl->data.v_time = v;
+ /* preserve only built-in UTC time zone, otherwise unset any set on the 'v' */
+ if(impl->data.v_time.zone != NULL &&
+ impl->data.v_time.zone != icaltimezone_get_utc_timezone())
+ impl->data.v_time.zone = NULL;
+
icalvalue_reset_kind(impl);
}