[glib/wip/gtimeval-document-year-2038-problem] Document that GTimeVal is subject to the year 2038 problem on 32-bit systems
- From: Iain Lane <iainl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/wip/gtimeval-document-year-2038-problem] Document that GTimeVal is subject to the year 2038 problem on 32-bit systems
- Date: Wed, 12 Sep 2018 11:55:52 +0000 (UTC)
commit 68a4e273b443ad79a3cd392d464390ab6a3fed2e
Author: Iain Lane <iainl gnome org>
Date: Tue Sep 4 11:15:25 2018 +0100
Document that GTimeVal is subject to the year 2038 problem on 32-bit systems
It might not be immediately obvious that this is the case. Let's record
it in the description of `GTimeVal` itself and also in
`g_time_val_from_iso8601`.
We also drop an incorrect statement in the documentation for
`g_time_val_from_iso8601` stating that years up to 3000 were supported;
this is also not true for the same reason.
Related: #1509
glib/gdate.c | 4 +++-
glib/gtimer.c | 10 ++++++----
2 files changed, 9 insertions(+), 5 deletions(-)
---
diff --git a/glib/gdate.c b/glib/gdate.c
index 6e163b8a7..13a87099a 100644
--- a/glib/gdate.c
+++ b/glib/gdate.c
@@ -120,7 +120,9 @@
*
* GLib is attempting to unify around the use of 64bit integers to
* represent microsecond-precision time. As such, this type will be
- * removed from a future version of GLib.
+ * removed from a future version of GLib. A consequence of using `glong` for
+ * `tv_sec` is that on 32-bit systems `GTimeVal` is subject to the year 2038
+ * problem.
*/
/**
diff --git a/glib/gtimer.c b/glib/gtimer.c
index 201225523..4f66826ae 100644
--- a/glib/gtimer.c
+++ b/glib/gtimer.c
@@ -538,10 +538,12 @@ g_time_val_from_iso8601 (const gchar *iso_date,
* variation of ISO 8601 format is required.
*
* If @time_ represents a date which is too large to fit into a `struct tm`,
- * %NULL will be returned. This is platform dependent, but it is safe to assume
- * years up to 3000 are supported. The return value of g_time_val_to_iso8601()
- * has been nullable since GLib 2.54; before then, GLib would crash under the
- * same conditions.
+ * %NULL will be returned. This is platform dependent. Note also that since
+ * `GTimeVal` stores the number of seconds as a `glong`, on 32-bit systems it
+ * is subject to the year 2038 problem.
+ *
+ * The return value of g_time_val_to_iso8601() has been nullable since GLib
+ * 2.54; before then, GLib would crash under the same conditions.
*
* Returns: (nullable): a newly allocated string containing an ISO 8601 date,
* or %NULL if @time_ was too large
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]