mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-18 11:50:38 -08:00
Do not allocate huge temporary memory areas and objects while encoding
for file I/O, thus reducing an enormous memory usage for large buffers. See http://lists.gnu.org/archive/html/emacs-devel/2013-10/msg00180.html. * coding.h (struct coding_system): New member raw_destination. * coding.c (setup_coding_system): Initialize it to zero. (encode_coding_object): If raw_destination is set, do not create dst_object. Add comment. * fileio.c (toplevel): New constant E_WRITE_MAX. (e_write): Do not encode more than E_WRITE_MAX characters per one loop iteration. Use raw_destination if E_WRITE_MAX characters is encoded.
This commit is contained in:
parent
b7d5bd823c
commit
f849808191
4 changed files with 57 additions and 8 deletions
|
|
@ -512,6 +512,10 @@ struct coding_system
|
|||
`charbuf', but at `src_object'. */
|
||||
unsigned chars_at_source : 1;
|
||||
|
||||
/* Nonzero if the result of conversion is in `destination'
|
||||
buffer rather than in `dst_object'. */
|
||||
unsigned raw_destination : 1;
|
||||
|
||||
/* Set to 1 if charbuf contains an annotation. */
|
||||
unsigned annotated : 1;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue