https://github.com/python/cpython/commit/06a1c3fb24c4be9ce3b432022ebaf3f913f86ba7
commit: 06a1c3fb24c4be9ce3b432022ebaf3f913f86ba7
branch: main
author: Cody Maloney <[email protected]>
committer: vstinner <[email protected]>
date: 2024-07-04T12:59:18Z
summary:
gh-120754: Update estimated_size in C truncate (#121357)
Sometimes a large file is truncated (test_largefile). While
estimated_size is used as a estimate (the read will stil get the number
of bytes in the file), that it is much larger than the actual size of
data can result in a significant over allocation and sometimes lead to
a MemoryError / running out of memory.
This brings the C implementation to match the Python _pyio
implementation.
files:
M Modules/_io/fileio.c
diff --git a/Modules/_io/fileio.c b/Modules/_io/fileio.c
index d5bf328eee9c10..5d9d87d6118a75 100644
--- a/Modules/_io/fileio.c
+++ b/Modules/_io/fileio.c
@@ -1094,6 +1094,12 @@ _io_FileIO_truncate_impl(fileio *self, PyTypeObject
*cls, PyObject *posobj)
return NULL;
}
+ /* Sometimes a large file is truncated. While estimated_size is used as a
+ estimate, that it is much larger than the actual size can result in a
+ significant over allocation and sometimes a MemoryError / running out of
+ memory. */
+ self->estimated_size = pos;
+
return posobj;
}
#endif /* HAVE_FTRUNCATE */
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]