]> git.eshelyaron.com Git - emacs.git/commitdiff
(Fmodify_frame_parameters): Use alist in reverse order.
authorRichard M. Stallman <rms@gnu.org>
Tue, 12 Nov 1996 06:03:20 +0000 (06:03 +0000)
committerRichard M. Stallman <rms@gnu.org>
Tue, 12 Nov 1996 06:03:20 +0000 (06:03 +0000)
src/frame.c

index c88262c7bae555335eee9eb123ce3c5aab7e7450..31b5b854348238ea7c0193efddcc69bd574f66b5 100644 (file)
@@ -1816,13 +1816,35 @@ so that `frame-parameters' will return them.")
     IT_set_frame_parameters (f, alist);
   else
 #endif
-    for (tail = alist; !EQ (tail, Qnil); tail = Fcdr (tail))
-      {
-       elt = Fcar (tail);
-       prop = Fcar (elt);
-       val = Fcdr (elt);
-       store_frame_param (f, prop, val);
-      }
+    {
+      int length = XINT (Flength (alist));
+      int i;
+      Lisp_Object *parms
+       = (Lisp_Object *) alloca (length * sizeof (Lisp_Object));
+      Lisp_Object *values
+       = (Lisp_Object *) alloca (length * sizeof (Lisp_Object));
+
+      /* Extract parm names and values into those vectors.  */
+
+      i = 0;
+      for (tail = alist; CONSP (tail); tail = Fcdr (tail))
+       {
+         Lisp_Object elt, prop, val;
+
+         elt = Fcar (tail);
+         parms[i] = Fcar (elt);
+         values[i] = Fcdr (elt);
+         i++;
+       }
+
+      /* Now process them in reverse of specified order.  */
+      for (i--; i >= 0; i--)
+       {
+         prop = parms[i];
+         val = values[i];
+         store_frame_param (f, prop, val);
+       }
+    }
 
   return Qnil;
 }