]> git.eshelyaron.com Git - emacs.git/commitdiff
* eval.c (Fprog1, Fprog2): Don't assume list length fits in int. Simplify.
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 26 Sep 2011 05:50:37 +0000 (22:50 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Mon, 26 Sep 2011 05:50:37 +0000 (22:50 -0700)
src/ChangeLog
src/eval.c

index ff76a9a8c781c1314b98baa0014cc773a9c5b996..9a2590eb54edde148f905b35ff251e75a5332024 100644 (file)
@@ -1,4 +1,4 @@
-2011-09-25  Paul Eggert  <eggert@cs.ucla.edu>
+2011-09-26  Paul Eggert  <eggert@cs.ucla.edu>
 
        * alloc.c (pure_bytes_used_lisp, pure_bytes_used_non_lisp):
        (allocate_vectorlike, buffer_memory_full, struct sdata, SDATA_SIZE)
        Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts.
        (Fapply, apply_lambda): Don't assume ptrdiff_t can hold fixnum.
        (grow_specpdl): Simplify allocation by using xpalloc.
+       (Fprog1, Fprog2): Don't assume list length fits in int.  Simplify.
        * fileio.c (Ffind_file_name_handler, Fcopy_file, Frename_file)
        (Finsert_file_contents, Fwrite_region, Fdo_auto_save):
        Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts.
index b4ef785b3c73a750173b887b32f5754ffbd20122..257b878395e086e8cb442fb1ef5aac143d7b9d52 100644 (file)
@@ -373,23 +373,14 @@ usage: (prog1 FIRST BODY...)  */)
   Lisp_Object val;
   register Lisp_Object args_left;
   struct gcpro gcpro1, gcpro2;
-  register int argnum = 0;
-
-  if (NILP (args))
-    return Qnil;
 
   args_left = args;
   val = Qnil;
   GCPRO2 (args, val);
 
-  do
-    {
-      Lisp_Object tem = eval_sub (XCAR (args_left));
-      if (!(argnum++))
-       val = tem;
-      args_left = XCDR (args_left);
-    }
-  while (CONSP (args_left));
+  val = eval_sub (XCAR (args_left));
+  while (CONSP (args_left = XCDR (args_left)))
+    eval_sub (XCAR (args_left));
 
   UNGCPRO;
   return val;
@@ -402,31 +393,12 @@ remaining args, whose values are discarded.
 usage: (prog2 FORM1 FORM2 BODY...)  */)
   (Lisp_Object args)
 {
-  Lisp_Object val;
-  register Lisp_Object args_left;
-  struct gcpro gcpro1, gcpro2;
-  register int argnum = -1;
-
-  val = Qnil;
-
-  if (NILP (args))
-    return Qnil;
-
-  args_left = args;
-  val = Qnil;
-  GCPRO2 (args, val);
+  struct gcpro gcpro1;
 
-  do
-    {
-      Lisp_Object tem = eval_sub (XCAR (args_left));
-      if (!(argnum++))
-       val = tem;
-      args_left = XCDR (args_left);
-    }
-  while (CONSP (args_left));
+  GCPRO1 (args);
 
-  UNGCPRO;
-  return val;
+  eval_sub (XCAR (args));
+  RETURN_UNGCPRO (Fprog1 (XCDR (args)));
 }
 
 DEFUN ("setq", Fsetq, Ssetq, 0, UNEVALLED, 0,