changeset 95118:d426dda989b7

* xdisp.c (select_frame_for_redisplay): Adjust for last change to indirect_variable. * eval.c (lisp_indirect_variable): New fun. (Fuser_variable_p): Use it.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Tue, 20 May 2008 00:13:37 +0000
parents 0b7174c8d2d3
children f4fdf58a1cea
files src/ChangeLog src/eval.c src/xdisp.c
diffstat 3 files changed, 22 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Mon May 19 22:39:16 2008 +0000
+++ b/src/ChangeLog	Tue May 20 00:13:37 2008 +0000
@@ -1,3 +1,10 @@
+2008-05-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* xdisp.c (select_frame_for_redisplay): Adjust for last change to
+	indirect_variable.
+	* eval.c (lisp_indirect_variable): New fun.
+	(Fuser_variable_p): Use it.
+
 2008-05-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 
 	* lisp.h (indirect_variable):
--- a/src/eval.c	Mon May 19 22:39:16 2008 +0000
+++ b/src/eval.c	Tue May 20 00:13:37 2008 +0000
@@ -934,6 +934,13 @@
   return Qnil;
 }
 
+static Lisp_Object
+lisp_indirect_variable (Lisp_Object sym)
+{
+  XSETSYMBOL (sym, indirect_variable (XSYMBOL (sym)));
+  return sym;
+}
+
 DEFUN ("user-variable-p", Fuser_variable_p, Suser_variable_p, 1, 1, 0,
        doc: /* Return t if VARIABLE is intended to be set and modified by users.
 \(The alternative is a variable used internally in a Lisp program.)
@@ -954,7 +961,7 @@
 
   /* If indirect and there's an alias loop, don't check anything else.  */
   if (XSYMBOL (variable)->indirect_variable
-      && NILP (internal_condition_case_1 (indirect_variable, variable,
+      && NILP (internal_condition_case_1 (lisp_indirect_variable, variable,
                                           Qt, user_variable_p_eh)))
     return Qnil;
 
--- a/src/xdisp.c	Mon May 19 22:39:16 2008 +0000
+++ b/src/xdisp.c	Tue May 20 00:13:37 2008 +0000
@@ -11033,8 +11033,9 @@
 select_frame_for_redisplay (frame)
      Lisp_Object frame;
 {
-  Lisp_Object tail, sym, val;
+  Lisp_Object tail, symbol, val;
   Lisp_Object old = selected_frame;
+  struct Lisp_Symbol *sym;
 
   xassert (FRAMEP (frame) && FRAME_LIVE_P (XFRAME (frame)));
 
@@ -11044,15 +11045,15 @@
     {
       for (tail = XFRAME (frame)->param_alist; CONSP (tail); tail = XCDR (tail))
 	if (CONSP (XCAR (tail))
-	    && (sym = XCAR (XCAR (tail)),
-		SYMBOLP (sym))
-	    && (sym = indirect_variable (sym),
-		val = SYMBOL_VALUE (sym),
+	    && (symbol = XCAR (XCAR (tail)),
+		SYMBOLP (symbol))
+	    && (sym = indirect_variable (XSYMBOL (symbol)),
+		val = sym->value,
 		(BUFFER_LOCAL_VALUEP (val)))
 	    && XBUFFER_LOCAL_VALUE (val)->check_frame)
 	  /* Use find_symbol_value rather than Fsymbol_value
 	     to avoid an error if it is void.  */
-	  find_symbol_value (sym);
+	  find_symbol_value (symbol);
     } while (!EQ (frame, old) && (frame = old, 1));
 }