(mapcar1): Maybe exit loop if original sequence was modified.
authorKim F. Storm <storm@cua.dk>
Wed, 1 Jun 2005 11:42:19 +0000 (11:42 +0000)
committerKim F. Storm <storm@cua.dk>
Wed, 1 Jun 2005 11:42:19 +0000 (11:42 +0000)
src/fns.c

index bd3893f..e910c87 100644 (file)
--- a/src/fns.c
+++ b/src/fns.c
@@ -3132,9 +3132,9 @@ mapcar1 (leni, vals, fn, seq)
   else   /* Must be a list, since Flength did not get an error */
     {
       tail = seq;
-      for (i = 0; i < leni; i++)
+      for (i = 0; i < leni && CONSP (tail); i++)
        {
-         dummy = call1 (fn, Fcar (tail));
+         dummy = call1 (fn, XCAR (tail));
          if (vals)
            vals[i] = dummy;
          tail = XCDR (tail);
@@ -3172,7 +3172,7 @@ SEQUENCE may be a list, a vector, a bool-vector, or a string.  */)
   mapcar1 (leni, args, function, sequence);
   UNGCPRO;
 
-  for (i = leni - 1; i >= 0; i--)
+  for (i = leni - 1; i > 0; i--)
     args[i + i] = args[i];
 
   for (i = 1; i < nargs; i += 2)