# HG changeset patch # User Kenichi Handa # Date 1052208997 0 # Node ID a9c2b371286323ca80cf20e0168dd49d0230db8c # Parent 56c80a95cb5b352a9b265b16e91631387babce35 (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. diff -r 56c80a95cb5b -r a9c2b3712863 src/coding.c --- 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;