diff src/fns.c @ 169:15872534500d r20-3b11

Import from CVS: tag r20-3b11
author cvs
date Mon, 13 Aug 2007 09:46:53 +0200
parents 85ec50267440
children 8eaf7971accc
line wrap: on
line diff
--- a/src/fns.c	Mon Aug 13 09:45:48 2007 +0200
+++ b/src/fns.c	Mon Aug 13 09:46:53 2007 +0200
@@ -192,7 +192,7 @@
   if (COMPILED_FUNCTIONP (seq))
     error_with_frob
       (seq,
-       "As of 19.14, `%s' no longer works with compiled-function objects",
+       "As of 20.3, `%s' no longer works with compiled-function objects",
        function);
 }
 
@@ -514,35 +514,24 @@
    */
   if (CONSP (arg))
     {
-      Lisp_Object rest = arg;
-      Lisp_Object head, tail;
-      tail = Qnil;
-      while (CONSP (rest))
+      Lisp_Object head = Fcons (XCAR (arg), XCDR (arg));
+      Lisp_Object tail = head;
+
+      for (arg = XCDR (arg); CONSP (arg); arg = XCDR (arg))
 	{
-	  Lisp_Object new = Fcons (XCAR (rest), XCDR (rest));
-	  if (NILP (tail))
-	    head = tail = new;
-	  else
-	    XCDR (tail) = new, tail = new;
-	  rest = XCDR (rest);
+	  XCDR (tail) = Fcons (XCAR (arg), XCDR (arg));
+	  tail = XCDR (tail);
 	  QUIT;
 	}
-      if (!NILP (tail))
-	XCDR (tail) = rest;
       return head;
     }
-  else if (STRINGP (arg))
-    return concat (1, &arg, c_string, 0);
-  else if (VECTORP (arg))
-    return concat (1, &arg, c_vector, 0);
-  else if (BIT_VECTORP (arg))
-    return concat (1, &arg, c_bit_vector, 0);
-  else
-    {
-      check_losing_bytecode ("copy-sequence", arg);
-      arg = wrong_type_argument (Qsequencep, arg);
-      goto again;
-    }
+  if (STRINGP     (arg)) return concat (1, &arg, c_string,     0);
+  if (VECTORP     (arg)) return concat (1, &arg, c_vector,     0);
+  if (BIT_VECTORP (arg)) return concat (1, &arg, c_bit_vector, 0);
+
+  check_losing_bytecode ("copy-sequence", arg);
+  arg = wrong_type_argument (Qsequencep, arg);
+  goto again;
 }
 
 struct merge_string_extents_struct