{
int c = *src++;
- coding->charbuf[coding->charbuf_used++] = (c & 0x80 ? - c : c);
+ if (c & 0x80)
+ c = BYTE8_TO_CHAR (c);
+ coding->charbuf[coding->charbuf_used++] = c;
}
produce_chars (coding, Qnil, 1);
}
Lisp_Object attrs;
Lisp_Object buffer;
int saved_pt = -1, saved_pt_byte;
+ int kill_src_buffer = 0;
buffer = Fcurrent_buffer ();
args[2] = make_number (Z);
safe_call (3, args);
}
+ if (XBUFFER (coding->src_object) != current_buffer)
+ kill_src_buffer = 1;
coding->src_object = Fcurrent_buffer ();
if (BEG != GPT)
move_gap_both (BEG, BEG_BYTE);
saved_pt_byte + (coding->produced - bytes));
}
+ if (kill_src_buffer)
+ Fkill_buffer (coding->src_object);
unbind_to (count, Qnil);
}