diff --git a/src/ChangeLog b/src/ChangeLog index 5f00b654261..a1d604b56d4 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2014-09-04 Eli Zaretskii + + * data.c (set_internal): Use assq_no_quit, not Fassq, to find an + existing binding of a variable, to avoid silently aborting + commands that use specbind. (Bug#18331) + 2014-09-02 Eli Zaretskii * dispnew.c (buffer_posn_from_coords): Fix an off-by-one error in diff --git a/src/data.c b/src/data.c index 4cb569bd943..5aeb24b16dc 100644 --- a/src/data.c +++ b/src/data.c @@ -1241,10 +1241,10 @@ set_internal (Lisp_Object symbol, Lisp_Object newval, Lisp_Object where, /* Find the new binding. */ XSETSYMBOL (symbol, sym); /* May have changed via aliasing. */ - tem1 = Fassq (symbol, - (blv->frame_local - ? XFRAME (where)->param_alist - : BVAR (XBUFFER (where), local_var_alist))); + tem1 = assq_no_quit (symbol, + (blv->frame_local + ? XFRAME (where)->param_alist + : BVAR (XBUFFER (where), local_var_alist))); set_blv_where (blv, where); blv->found = 1;