diff --git a/uiop/configuration.lisp b/uiop/configuration.lisp
index 5e1b87886f1a553314fa86b13ade9d86df30ec4b..07e90e626a1c97d14f0ed33bd66ced92c19bce21 100644
--- a/uiop/configuration.lisp
+++ b/uiop/configuration.lisp
@@ -148,7 +148,7 @@ this function tries to locate the Windows FOLDER for one of
     "Map the VALIDATOR across the .conf files in DIRECTORY, the TAG will
 be applied to the results to yield a configuration form.  Current
 values of TAG include :source-registry and :output-translations."
-    (let ((files (sort (ignore-errors
+    (let ((files (sort (ignore-errors ;; SORT w/o COPY-LIST is OK: DIRECTORY returns a fresh list
                         (remove-if
                          'hidden-pathname-p
                          (directory* (make-pathname :name *wild* :type "conf" :defaults directory))))
diff --git a/uiop/package.lisp b/uiop/package.lisp
index 77ff4101a614179b8a8f0119d55da863e4ac1e78..1d928a326571241a03d536ac5877333107b0f3a0 100644
--- a/uiop/package.lisp
+++ b/uiop/package.lisp
@@ -317,7 +317,7 @@ or when loading the package is optional."
                        (imported)
                        (t (push name intern)))))))
         (labels ((sort-names (names)
-                   (sort names #'string<))
+                   (sort (copy-list names) #'string<))
                  (table-keys (table)
                    (loop :for k :being :the :hash-keys :of table :collect k))
                  (when-relevant (key value)