X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fprimordial-extensions.lisp;h=e91d56d1b261be5e43675c4e6e577ecb473a412a;hb=829ced3e78a23ba153ba4db64e6ea6984c2313b6;hp=3a5350f50c99d3cfed22ce23986783ca5df8596a;hpb=47f408ca8480937ac946db8455b7c3d3e0b353bb;p=sbcl.git diff --git a/src/code/primordial-extensions.lisp b/src/code/primordial-extensions.lisp index 3a5350f..e91d56d 100644 --- a/src/code/primordial-extensions.lisp +++ b/src/code/primordial-extensions.lisp @@ -222,7 +222,8 @@ ;; but it will immediately lead to undefined to behavior, ;; since almost any operation on a deleted package is ;; undefined. - (package-name maybe-package)) + #-sb-xc-host + (package-%name maybe-package)) maybe-package) (t ;; We're in the undefined behavior zone. First, munge the @@ -344,6 +345,21 @@ (1- max)))) (t nil))) +(defun proper-list-p (x) + (unless (consp x) + (return-from proper-list-p (null x))) + (let ((rabbit (cdr x)) + (turtle x)) + (flet ((pop-rabbit () + (when (eql rabbit turtle) ; circular + (return-from proper-list-p nil)) + (when (atom rabbit) + (return-from proper-list-p (null rabbit))) + (pop rabbit))) + (loop (pop-rabbit) + (pop-rabbit) + (pop turtle))))) + ;;; Helpers for defining error-signalling NOP's for "not supported ;;; here" operations. (defmacro define-unsupported-fun (name &optional