summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/fns.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/src/fns.c b/src/fns.c
index d8f51afbde0..9e8a15d5578 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -882,17 +882,13 @@ See also the function `nreverse', which is used more often.")
(list)
Lisp_Object list;
{
- Lisp_Object length;
- register Lisp_Object *vec;
- register Lisp_Object tail;
- register int i;
-
- length = Flength (list);
- vec = (Lisp_Object *) alloca (XINT (length) * sizeof (Lisp_Object));
- for (i = XINT (length) - 1, tail = list; i >= 0; i--, tail = Fcdr (tail))
- vec[i] = Fcar (tail);
+ Lisp_Object new;
- return Flist (XINT (length), vec);
+ for (new = Qnil; CONSP (list); list = XCONS (list)->cdr)
+ new = Fcons (XCONS (list)->car, new);
+ if (!NILP (list))
+ wrong_type_argument (Qconsp, list);
+ return new;
}
Lisp_Object merge ();