Bug #1565150: Fix subsecond processing for os.utime on Windows.
This commit is contained in:
parent
6bf550138d
commit
463a42b5de
|
@ -223,6 +223,14 @@ class StatAttributeTests(unittest.TestCase):
|
|||
except TypeError:
|
||||
pass
|
||||
|
||||
# Restrict test to Win32, since there is no guarantee other
|
||||
# systems support centiseconds
|
||||
if sys.platform == 'win32':
|
||||
def test_1565150(self):
|
||||
t1 = 1159195039.25
|
||||
os.utime(self.fname, (t1, t1))
|
||||
self.assertEquals(os.stat(self.fname).st_mtime, t1)
|
||||
|
||||
from test import mapping_tests
|
||||
|
||||
class EnvironTests(mapping_tests.BasicTestMappingProtocol):
|
||||
|
|
|
@ -49,6 +49,8 @@ Core and builtins
|
|||
Extension Modules
|
||||
-----------------
|
||||
|
||||
- Bug #1565150: Fix subsecond processing for os.utime on Windows.
|
||||
|
||||
- Patch #1572724: fix typo ('=' instead of '==') in _msi.c.
|
||||
|
||||
- Bug #1572832: fix a bug in ISO-2022 codecs which may cause segfault
|
||||
|
|
|
@ -792,7 +792,7 @@ time_t_to_FILE_TIME(int time_in, int nsec_in, FILETIME *out_ptr)
|
|||
/* XXX endianness */
|
||||
__int64 out;
|
||||
out = time_in + secs_between_epochs;
|
||||
out = out * 10000000 + nsec_in;
|
||||
out = out * 10000000 + nsec_in / 100;
|
||||
memcpy(out_ptr, &out, sizeof(out));
|
||||
}
|
||||
|
||||
|
@ -2501,11 +2501,11 @@ posix_utime(PyObject *self, PyObject *args)
|
|||
if (extract_time(PyTuple_GET_ITEM(arg, 0),
|
||||
&atimesec, &ausec) == -1)
|
||||
goto done;
|
||||
time_t_to_FILE_TIME(atimesec, ausec, &atime);
|
||||
time_t_to_FILE_TIME(atimesec, 1000*ausec, &atime);
|
||||
if (extract_time(PyTuple_GET_ITEM(arg, 1),
|
||||
&mtimesec, &musec) == -1)
|
||||
goto done;
|
||||
time_t_to_FILE_TIME(mtimesec, musec, &mtime);
|
||||
time_t_to_FILE_TIME(mtimesec, 1000*musec, &mtime);
|
||||
}
|
||||
if (!SetFileTime(hFile, NULL, &atime, &mtime)) {
|
||||
/* Avoid putting the file name into the error here,
|
||||
|
|
Loading…
Reference in New Issue