]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix last change in xfaces.c
authorEli Zaretskii <eliz@gnu.org>
Mon, 28 Jan 2019 20:03:05 +0000 (22:03 +0200)
committerEli Zaretskii <eliz@gnu.org>
Mon, 28 Jan 2019 20:03:05 +0000 (22:03 +0200)
* src/xfaces.c (init_xfaces): Don't rely of 'face'
property of a face to be a natural number.

src/xfaces.c

index 7facb13b76c5b7581e7a69dba083c0971ea32cf6..3ba824b6517b711d14e2a88aa7cf1a5cad1de424 100644 (file)
@@ -6520,28 +6520,19 @@ init_xfaces (void)
 {
   if (CONSP (Vface_new_frame_defaults))
     {
-      Lisp_Object lface = XCAR (Vface_new_frame_defaults);
-      if (CONSP (lface))
+      /* Allocate the lface_id_to_name[] array.  */
+      lface_id_to_name_size = next_lface_id =
+       XFIXNAT (Flength (Vface_new_frame_defaults));
+      lface_id_to_name = xnmalloc (next_lface_id, sizeof *lface_id_to_name);
+
+      /* Store the faces.  */
+      Lisp_Object tail;
+      int i = next_lface_id - 1;
+      for (tail = Vface_new_frame_defaults; CONSP (tail); tail = XCDR (tail))
        {
-         /* The first face in the list is the last face defined
-            during loadup. Compute how many faces are there, and
-            allocate the lface_id_to_name[] array.  */
-         Lisp_Object lface_id = Fget (XCAR (lface), Qface);
-         lface_id_to_name_size = next_lface_id = XFIXNAT (lface_id) + 1;
-         lface_id_to_name = xnmalloc (next_lface_id, sizeof *lface_id_to_name);
-         /* Store the last face.  */
-         lface_id_to_name[next_lface_id - 1] = lface;
-
-         /* Store the rest of the faces.  */
-         Lisp_Object tail;
-         for (tail = XCDR (Vface_new_frame_defaults); CONSP (tail);
-              tail = XCDR (tail))
-           {
-             lface = XCAR (tail);
-             int face_id = XFIXNAT (Fget (XCAR (lface), Qface));
-             eassert (face_id < lface_id_to_name_size);
-             lface_id_to_name[face_id] = lface;
-           }
+         Lisp_Object lface = XCAR (tail);
+         eassert (i >= 0);
+         lface_id_to_name[i--] = XCAR (lface);
        }
     }
 }