aboutsummaryrefslogtreecommitdiffstats
path: root/src/coding.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/coding.c')
-rw-r--r--src/coding.c26
1 files changed, 4 insertions, 22 deletions
diff --git a/src/coding.c b/src/coding.c
index c6d96436770..e351cc72fab 100644
--- a/src/coding.c
+++ b/src/coding.c
@@ -7785,7 +7785,7 @@ encode_coding (struct coding_system *coding)
7785 7785
7786 7786
7787/* Name (or base name) of work buffer for code conversion. */ 7787/* Name (or base name) of work buffer for code conversion. */
7788static Lisp_Object Vcode_conversion_workbuf_name; 7788Lisp_Object Vcode_conversion_workbuf_name;
7789 7789
7790/* A working buffer used by the top level conversion. Once it is 7790/* A working buffer used by the top level conversion. Once it is
7791 created, it is never destroyed. It has the name 7791 created, it is never destroyed. It has the name
@@ -7797,7 +7797,6 @@ static Lisp_Object Vcode_conversion_reused_workbuf;
7797/* True iff Vcode_conversion_reused_workbuf is already in use. */ 7797/* True iff Vcode_conversion_reused_workbuf is already in use. */
7798static bool reused_workbuf_in_use; 7798static bool reused_workbuf_in_use;
7799 7799
7800
7801static void 7800static void
7802code_conversion_restore (Lisp_Object arg) 7801code_conversion_restore (Lisp_Object arg)
7803{ 7802{
@@ -7810,12 +7809,7 @@ code_conversion_restore (Lisp_Object arg)
7810 if (EQ (workbuf, Vcode_conversion_reused_workbuf)) 7809 if (EQ (workbuf, Vcode_conversion_reused_workbuf))
7811 reused_workbuf_in_use = 0; 7810 reused_workbuf_in_use = 0;
7812 else 7811 else
7813 { 7812 Fkill_buffer (workbuf);
7814 ptrdiff_t count = SPECPDL_INDEX ();
7815 specbind (Qbuffer_list_update_hook, Qnil);
7816 Fkill_buffer (workbuf);
7817 unbind_to (count, Qnil);
7818 }
7819 } 7813 }
7820 set_buffer_internal (XBUFFER (current)); 7814 set_buffer_internal (XBUFFER (current));
7821} 7815}
@@ -7827,24 +7821,17 @@ code_conversion_save (bool with_work_buf, bool multibyte)
7827 7821
7828 if (with_work_buf) 7822 if (with_work_buf)
7829 { 7823 {
7830 ptrdiff_t count = SPECPDL_INDEX ();
7831 if (reused_workbuf_in_use) 7824 if (reused_workbuf_in_use)
7832 { 7825 {
7833 Lisp_Object name 7826 Lisp_Object name
7834 = Fgenerate_new_buffer_name (Vcode_conversion_workbuf_name, Qnil); 7827 = Fgenerate_new_buffer_name (Vcode_conversion_workbuf_name, Qnil);
7835 specbind (Qbuffer_list_update_hook, Qnil);
7836 workbuf = Fget_buffer_create (name); 7828 workbuf = Fget_buffer_create (name);
7837 unbind_to (count, Qnil);
7838 } 7829 }
7839 else 7830 else
7840 { 7831 {
7841 if (NILP (Fbuffer_live_p (Vcode_conversion_reused_workbuf))) 7832 if (NILP (Fbuffer_live_p (Vcode_conversion_reused_workbuf)))
7842 { 7833 Vcode_conversion_reused_workbuf
7843 specbind (Qbuffer_list_update_hook, Qnil); 7834 = Fget_buffer_create (Vcode_conversion_workbuf_name);
7844 Vcode_conversion_reused_workbuf
7845 = Fget_buffer_create (Vcode_conversion_workbuf_name);
7846 unbind_to (count, Qnil);
7847 }
7848 workbuf = Vcode_conversion_reused_workbuf; 7835 workbuf = Vcode_conversion_reused_workbuf;
7849 } 7836 }
7850 } 7837 }
@@ -7863,11 +7850,6 @@ code_conversion_save (bool with_work_buf, bool multibyte)
7863 bset_enable_multibyte_characters (current_buffer, multibyte ? Qt : Qnil); 7850 bset_enable_multibyte_characters (current_buffer, multibyte ? Qt : Qnil);
7864 if (EQ (workbuf, Vcode_conversion_reused_workbuf)) 7851 if (EQ (workbuf, Vcode_conversion_reused_workbuf))
7865 reused_workbuf_in_use = 1; 7852 reused_workbuf_in_use = 1;
7866 else
7867 {
7868 Fset (Fmake_local_variable (Qkill_buffer_query_functions), Qnil);
7869 Fset (Fmake_local_variable (Qkill_buffer_hook), Qnil);
7870 }
7871 set_buffer_internal (current); 7853 set_buffer_internal (current);
7872 } 7854 }
7873 7855