X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Flist.lisp;h=f15ad9f8aa0fd68f770900b2d77d1847527397e9;hb=25fe91bf63fd473d9316675b0e0ca9be0079e9eb;hp=b328681bc7e4688e466ad2f528ba347afdec42ab;hpb=92d8ab5b9274e73e50eb21feacbed396a9b24897;p=sbcl.git diff --git a/src/code/list.lisp b/src/code/list.lisp index b328681..f15ad9f 100644 --- a/src/code/list.lisp +++ b/src/code/list.lisp @@ -233,7 +233,8 @@ (defun last1 (list) #!+sb-doc "Return the last cons (not the last element) of a list" - (let ((rest list)) + (let ((rest list) + (list list)) (loop (unless (consp rest) (return list)) (shiftf list rest (cdr rest))))) @@ -394,12 +395,12 @@ ((endp elements)) (let ((ele (car elements))) (typecase ele - (cons (rplacd (last1 splice) ele) + (cons (rplacd (last splice) ele) (setf splice ele)) - (null (rplacd (last1 splice) nil)) + (null (rplacd (last splice) nil)) (atom (if (cdr elements) (fail ele) - (rplacd (last1 splice) ele))) + (rplacd (last splice) ele))) (t (fail ele))))) (return result))) (null) @@ -1121,7 +1122,7 @@ (setf (car l) (cdar l))) (setq res (apply fun (nreverse args))) (case accumulate - (:nconc (setq temp (last1 (nconc temp res)))) + (:nconc (setq temp (last (nconc temp res)))) (:list (rplacd temp (list res)) (setq temp (cdr temp))))))))