mirror of https://github.com/python/cpython
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.
This commit is contained in:
parent
19d1e43e43
commit
06a1c3fb24
|
@ -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 */
|
||||
|
|
Loading…
Reference in New Issue