Do not allocate huge temporary memory areas and objects while encoding
authorDmitry Antipov <dmantipov@yandex.ru>
Tue, 8 Oct 2013 06:40:09 +0000 (10:40 +0400)
committerDmitry Antipov <dmantipov@yandex.ru>
Tue, 8 Oct 2013 06:40:09 +0000 (10:40 +0400)
commitf8498081911e4c1381c4bed5ac3b664ceca57d64
treed96b7bf86daef23ecae0f9239ef79bff81500490
parentb7d5bd823c239a8ee3613abcc4e24fe290a673d0
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.
src/ChangeLog
src/coding.c
src/coding.h
src/fileio.c