Mercurial > emacs
comparison src/coding.c @ 90231:8be9e4c6d687
(encode_coding_object): If a pre-write-conversion
function makes a new buffer, kill it.
| author | Kenichi Handa <handa@m17n.org> |
|---|---|
| date | Fri, 23 Sep 2005 07:06:22 +0000 |
| parents | 2d92f5c9d6ae |
| children | c59afb15f5c6 |
comparison
equal
deleted
inserted
replaced
| 90230:fa744c8b8632 | 90231:8be9e4c6d687 |
|---|---|
| 6885 EMACS_INT chars = to - from; | 6885 EMACS_INT chars = to - from; |
| 6886 EMACS_INT bytes = to_byte - from_byte; | 6886 EMACS_INT bytes = to_byte - from_byte; |
| 6887 Lisp_Object attrs; | 6887 Lisp_Object attrs; |
| 6888 Lisp_Object buffer; | 6888 Lisp_Object buffer; |
| 6889 int saved_pt = -1, saved_pt_byte; | 6889 int saved_pt = -1, saved_pt_byte; |
| 6890 int kill_src_buffer = 0; | |
| 6890 | 6891 |
| 6891 buffer = Fcurrent_buffer (); | 6892 buffer = Fcurrent_buffer (); |
| 6892 | 6893 |
| 6893 coding->src_object = src_object; | 6894 coding->src_object = src_object; |
| 6894 coding->src_chars = chars; | 6895 coding->src_chars = chars; |
| 6922 args[0] = CODING_ATTR_PRE_WRITE (attrs); | 6923 args[0] = CODING_ATTR_PRE_WRITE (attrs); |
| 6923 args[1] = make_number (BEG); | 6924 args[1] = make_number (BEG); |
| 6924 args[2] = make_number (Z); | 6925 args[2] = make_number (Z); |
| 6925 safe_call (3, args); | 6926 safe_call (3, args); |
| 6926 } | 6927 } |
| 6928 if (XBUFFER (coding->src_object) != current_buffer) | |
| 6929 kill_src_buffer = 1; | |
| 6927 coding->src_object = Fcurrent_buffer (); | 6930 coding->src_object = Fcurrent_buffer (); |
| 6928 if (BEG != GPT) | 6931 if (BEG != GPT) |
| 6929 move_gap_both (BEG, BEG_BYTE); | 6932 move_gap_both (BEG, BEG_BYTE); |
| 6930 coding->src_chars = Z - BEG; | 6933 coding->src_chars = Z - BEG; |
| 6931 coding->src_bytes = Z_BYTE - BEG_BYTE; | 6934 coding->src_bytes = Z_BYTE - BEG_BYTE; |
| 7024 else | 7027 else |
| 7025 TEMP_SET_PT_BOTH (saved_pt + (coding->produced - bytes), | 7028 TEMP_SET_PT_BOTH (saved_pt + (coding->produced - bytes), |
| 7026 saved_pt_byte + (coding->produced - bytes)); | 7029 saved_pt_byte + (coding->produced - bytes)); |
| 7027 } | 7030 } |
| 7028 | 7031 |
| 7032 if (kill_src_buffer) | |
| 7033 Fkill_buffer (coding->src_object); | |
| 7029 unbind_to (count, Qnil); | 7034 unbind_to (count, Qnil); |
| 7030 } | 7035 } |
| 7031 | 7036 |
| 7032 | 7037 |
| 7033 Lisp_Object | 7038 Lisp_Object |
