diff -up evolution-data-server-3.12.11/libedataserver/e-time-utils.c.time-parse-am-pm evolution-data-server-3.12.11/libedataserver/e-time-utils.c --- evolution-data-server-3.12.11/libedataserver/e-time-utils.c.time-parse-am-pm 2014-06-01 21:10:19.000000000 +0200 +++ evolution-data-server-3.12.11/libedataserver/e-time-utils.c 2015-07-10 16:24:54.918755056 +0200 @@ -1576,9 +1576,28 @@ static gboolean locale_supports_12_hour_format (void) { struct tm tmp_tm = { 0 }; - gchar s[16]; + gchar s[40]; + + /* Fill the struct tm with some sane values. */ + tmp_tm.tm_year = 2000; + tmp_tm.tm_mon = 0; + tmp_tm.tm_mday = 1; + tmp_tm.tm_sec = 0; + tmp_tm.tm_isdst = 0; + tmp_tm.tm_hour = 1; + tmp_tm.tm_min = 0; + tmp_tm.tm_wday = 6; + tmp_tm.tm_yday = 6; e_utf8_strftime (s, sizeof (s), "%p", &tmp_tm); + + if (!s[0]) { + tmp_tm.tm_hour = 13; + tmp_tm.tm_min = 0; + + e_utf8_strftime (s, sizeof (s), "%p", &tmp_tm); + } + return s[0] != '\0'; }