Mercurial > emacs
changeset 108361:c1fe9f79424a
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.
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Fri, 30 Apr 2010 12:00:48 -0400 |
parents | 6b4205b02fd5 |
children | e9328d74ba23 |
files | src/ChangeLog src/composite.c src/fileio.c src/lisp.h |
diffstat | 4 files changed, 23 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- 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 <schwab@linux-m68k.org> + + * 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 <handa@m17n.org> * ftfont.c (M17N_FLT_USE_NEW_FEATURE): Define it if we can use the
--- 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); } }
--- 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; {
--- 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));