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.
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 */