Mercurial > emacs
changeset 89418:a9c2b3712863
(coding_set_source): Fix for the case that the current
buffer is different from coding->src_object.
(decode_coding_object): Don't use the conversion work buffer if
DST_OBJECT is a buffer.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Tue, 06 May 2003 08:16:37 +0000 |
parents | 56c80a95cb5b |
children | 18e57407a82b |
files | src/coding.c |
diffstat | 1 files changed, 8 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/src/coding.c Sun May 04 15:46:26 2003 +0000 +++ b/src/coding.c Tue May 06 08:16:37 2003 +0000 @@ -899,18 +899,12 @@ { if (BUFFERP (coding->src_object)) { + struct buffer *buf = XBUFFER (coding->src_object); + if (coding->src_pos < 0) - coding->source = GAP_END_ADDR + coding->src_pos_byte; + coding->source = BUF_GAP_END_ADDR (buf) + coding->src_pos_byte; else - { - struct buffer *buf = XBUFFER (coding->src_object); - EMACS_INT gpt_byte = BUF_GPT_BYTE (buf); - unsigned char *beg_addr = BUF_BEG_ADDR (buf); - - coding->source = beg_addr + coding->src_pos_byte - 1; - if (coding->src_pos_byte >= gpt_byte) - coding->source += BUF_GAP_SIZE (buf); - } + coding->source = BUF_BYTE_ADDRESS (buf, coding->src_pos_byte); } else if (STRINGP (coding->src_object)) { @@ -6231,7 +6225,7 @@ set in CODING->dst_object. If it is Qnil, the decoded text is stored at CODING->destination. - The called must allocate CODING->dst_bytes bytes at + The caller must allocate CODING->dst_bytes bytes at CODING->destination by xmalloc. If the decoded text is longer than CODING->dst_bytes, CODING->destination is relocated by xrealloc. */ @@ -6293,8 +6287,9 @@ detect_coding (coding); attrs = CODING_ID_ATTRS (coding->id); - if (! NILP (CODING_ATTR_POST_READ (attrs)) - || EQ (dst_object, Qt)) + if (EQ (dst_object, Qt) + || (! NILP (CODING_ATTR_POST_READ (attrs)) + && NILP (dst_object))) { coding->dst_object = make_conversion_work_buffer (1); coding->dst_pos = BEG;