diff --git a/uiop/utility.lisp b/uiop/utility.lisp
index 685859bf55debc6f1b3f3981307bb6ebec215851..e17f49f4802ddc50ebcf629f283f1045b231288a 100644
--- a/uiop/utility.lisp
+++ b/uiop/utility.lisp
@@ -236,6 +236,7 @@ starting the separation from the end, e.g. when called with arguments
  \"a.b.c.d.e\" :max 3 :separator \".\" it will return (\"a.b.c\" \"d\" \"e\")."
     (block ()
       (let ((list nil) (words 0) (end (length string)))
+        (when (zerop end) (return nil))
         (flet ((separatorp (char) (find char separator))
                (done () (return (cons (subseq string 0 end) list))))
           (loop