emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] trunk r117934: * chartab.c (uniprop_encode_value_numeric):


From: Dmitry Antipov
Subject: [Emacs-diffs] trunk r117934: * chartab.c (uniprop_encode_value_numeric):
Date: Wed, 24 Sep 2014 11:11:59 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 117934
revision-id: address@hidden
parent: address@hidden
committer: Dmitry Antipov <address@hidden>
branch nick: trunk
timestamp: Wed 2014-09-24 15:11:14 +0400
message:
  * chartab.c (uniprop_encode_value_numeric):
  * font.c (font_style_to_value): Use make_local_vector.
  (font_delete_unmatched): Use local_cons but respect MAX_ALLOCA.
  * keymap.c (append_key): Use scoped_list1.
modified:
  src/ChangeLog                  changelog-20091113204419-o5vbwnq5f7feedwu-1438
  src/chartab.c                  chartab.c-20091113204419-o5vbwnq5f7feedwu-8539
  src/font.c                     font.c-20091113204419-o5vbwnq5f7feedwu-8540
  src/keymap.c                   keymap.c-20091113204419-o5vbwnq5f7feedwu-219
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2014-09-24 10:06:53 +0000
+++ b/src/ChangeLog     2014-09-24 11:11:14 +0000
@@ -31,6 +31,11 @@
        (x_send_scroll_bar_event, xm_scroll_callback, xg_scroll_callback):
        Prefer enum and explicit enum members to integers and numeric values.
 
+       * chartab.c (uniprop_encode_value_numeric):
+       * font.c (font_style_to_value): Use make_local_vector.
+       (font_delete_unmatched): Use local_cons but respect MAX_ALLOCA.
+       * keymap.c (append_key): Use scoped_list1.
+
 2014-09-24  Paul Eggert  <address@hidden>
 
        Fix some slow uses and misuses of strcat.

=== modified file 'src/chartab.c'
--- a/src/chartab.c     2014-09-15 14:53:23 +0000
+++ b/src/chartab.c     2014-09-24 11:11:14 +0000
@@ -1258,13 +1258,8 @@
       break;
   value = make_number (i);
   if (i == size)
-    {
-      Lisp_Object args[2];
-
-      args[0] = XCHAR_TABLE (table)->extras[4];
-      args[1] = Fmake_vector (make_number (1), value);
-      set_char_table_extras (table, 4, Fvconcat (2, args));
-    }
+    set_char_table_extras (table, 4, Fvconcat (2, ((Lisp_Object []) {
+      XCHAR_TABLE (table)->extras[4], make_local_vector (1, value) })));
   return make_number (i);
 }
 

=== modified file 'src/font.c'
--- a/src/font.c        2014-09-23 17:03:48 +0000
+++ b/src/font.c        2014-09-24 11:11:14 +0000
@@ -367,7 +367,7 @@
     {
       int i, j;
       char *s;
-      Lisp_Object args[2], elt;
+      Lisp_Object elt;
 
       /* At first try exact match.  */
       for (i = 0; i < len; i++)
@@ -399,9 +399,9 @@
       eassert (len < 255);
       elt = Fmake_vector (make_number (2), make_number (100));
       ASET (elt, 1, val);
-      args[0] = table;
-      args[1] = Fmake_vector (make_number (1), elt);
-      ASET (font_style_table, prop - FONT_WEIGHT_INDEX, Fvconcat (2, args));
+      ASET (font_style_table, prop - FONT_WEIGHT_INDEX,
+           Fvconcat (2, ((Lisp_Object [])
+             { table, make_local_vector (1, elt) })));
       return (100 << 8) | (i << 4);
     }
   else
@@ -2685,7 +2685,9 @@
 {
   Lisp_Object entity, val;
   enum font_property_index prop;
-  int i;
+  /* If USE_STACK_LISP_OBJECTS, MAX is used to avoid unbounded alloca.  */
+  ptrdiff_t i, max
+    = (USE_STACK_LISP_OBJECTS ? MAX_ALLOCA / sizeof (struct Lisp_Cons) : 0);
 
   for (val = Qnil, i = ASIZE (vec) - 1; i >= 0; i--)
     {
@@ -2713,7 +2715,7 @@
        }
       if (NILP (spec))
        {
-         val = Fcons (entity, val);
+         val = --max > 0 ? local_cons (entity, val) : Fcons (entity, val);
          continue;
        }
       for (prop = FONT_WEIGHT_INDEX; prop < FONT_SIZE_INDEX; prop++)
@@ -2744,7 +2746,7 @@
                   AREF (entity, FONT_AVGWIDTH_INDEX)))
        prop = FONT_SPEC_MAX;
       if (prop < FONT_SPEC_MAX)
-       val = Fcons (entity, val);
+       val = --max > 0 ? local_cons (entity, val) : Fcons (entity, val);
     }
   return (Fvconcat (1, &val));
 }

=== modified file 'src/keymap.c'
--- a/src/keymap.c      2014-09-15 14:53:23 +0000
+++ b/src/keymap.c      2014-09-24 11:11:14 +0000
@@ -1299,11 +1299,7 @@
 static Lisp_Object
 append_key (Lisp_Object key_sequence, Lisp_Object key)
 {
-  Lisp_Object args[2];
-
-  args[0] = key_sequence;
-  args[1] = list1 (key);
-  return Fvconcat (2, args);
+  return Fvconcat (2, ((Lisp_Object []) { key_sequence, scoped_list1 (key) }));
 }
 
 /* Given a event type C which is a symbol,


reply via email to

[Prev in Thread] Current Thread [Next in Thread]