# HG changeset patch # User Chong Yidong # Date 1272643248 14400 # Node ID c1fe9f79424a6a64627570a357aa22bba60c4063 # Parent 6b4205b02fd5b4b4062b6f07bdfbada8a7ca71b0 Fix for Bug#5984. * composite.c (autocmp_chars): Save point as marker before calling auto-composition-function. * lisp.h (restore_point_unwind): Add prototype. * fileio.c (restore_point_unwind): Remove static attribute. diff -r 6b4205b02fd5 -r c1fe9f79424a src/ChangeLog --- a/src/ChangeLog Wed Apr 28 21:38:12 2010 -0500 +++ b/src/ChangeLog Fri Apr 30 12:00:48 2010 -0400 @@ -1,3 +1,12 @@ +2010-04-30 Andreas Schwab + + * composite.c (autocmp_chars): Save point as marker before calling + auto-composition-function (Bug#5984). + + * lisp.h (restore_point_unwind): Add prototype. + + * fileio.c (restore_point_unwind): Remove static attribute. + 2010-04-23 Kenichi Handa * ftfont.c (M17N_FLT_USE_NEW_FEATURE): Define it if we can use the diff -r 6b4205b02fd5 -r c1fe9f79424a src/composite.c --- a/src/composite.c Wed Apr 28 21:38:12 2010 -0500 +++ b/src/composite.c Fri Apr 30 12:00:48 2010 -0400 @@ -990,6 +990,14 @@ { Lisp_Object args[6]; + /* Save point as marker before calling out to lisp. */ + if (NILP (string)) + { + Lisp_Object m = Fmake_marker (); + set_marker_both (m, Qnil, pt, pt_byte); + record_unwind_protect (restore_point_unwind, m); + } + args[0] = Vauto_composition_function; args[1] = AREF (elt, 2); args[2] = pos; @@ -998,8 +1006,10 @@ args[5] = string; gstring = safe_call (6, args); } - if (NILP (string)) - TEMP_SET_PT_BOTH (pt, pt_byte); + else if (NILP (string)) + { + TEMP_SET_PT_BOTH (pt, pt_byte); + } return unbind_to (count, gstring); } } diff -r 6b4205b02fd5 -r c1fe9f79424a src/fileio.c --- a/src/fileio.c Wed Apr 28 21:38:12 2010 -0500 +++ b/src/fileio.c Fri Apr 30 12:00:48 2010 -0400 @@ -302,7 +302,7 @@ /* Restore point, having saved it as a marker. */ -static Lisp_Object +Lisp_Object restore_point_unwind (location) Lisp_Object location; { diff -r 6b4205b02fd5 -r c1fe9f79424a src/lisp.h --- a/src/lisp.h Wed Apr 28 21:38:12 2010 -0500 +++ b/src/lisp.h Fri Apr 30 12:00:48 2010 -0400 @@ -3018,6 +3018,7 @@ EXFUN (Ffile_executable_p, 1); EXFUN (Fread_file_name, 6); extern Lisp_Object close_file_unwind P_ ((Lisp_Object)); +extern Lisp_Object restore_point_unwind P_ ((Lisp_Object)); extern void report_file_error P_ ((const char *, Lisp_Object)) NO_RETURN; extern int internal_delete_file P_ ((Lisp_Object)); extern void syms_of_fileio P_ ((void));