mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-10 03:16:17 +01:00
g_file_info_get_modification_date_time: Calculate in integer domain
g_date_time_add_seconds() and g_date_time_add_full() use floating-point seconds, which can result in the value varying slightly from what's actually on disk. This causes intermittent test failures in gio/tests/g-file-info.c on Debian i386, where we set a file's mtime to be 50µs later, then read it back and sometimes find that it is only 49µs later than the previous value. I've only seen this happen on i386, which means it might be to do with different floating-point rounding when a value is stored in the 80-bit legacy floating point registers rather than in double precision. g_date_time_add() takes a GTimeSpan, which is in microseconds; conveniently, that's exactly what we get from the GFileInfo. Bug-Debian: https://bugs.debian.org/941547 Signed-off-by: Simon McVittie <smcv@collabora.com>
This commit is contained in:
parent
90bdc2ffb6
commit
14609b0b25
@ -1822,7 +1822,7 @@ g_file_info_get_modification_date_time (GFileInfo *info)
|
||||
if (value_usec == NULL)
|
||||
return g_steal_pointer (&dt);
|
||||
|
||||
dt2 = g_date_time_add_seconds (dt, _g_file_attribute_value_get_uint32 (value_usec) / (gdouble) G_USEC_PER_SEC);
|
||||
dt2 = g_date_time_add (dt, _g_file_attribute_value_get_uint32 (value_usec));
|
||||
g_date_time_unref (dt);
|
||||
|
||||
return g_steal_pointer (&dt2);
|
||||
|
Loading…
Reference in New Issue
Block a user