diff --git a/code/package.lisp b/code/package.lisp
index 998f797de418dfb99471a274c2e18d8b11e19a56..4c6fbb85c000f4044ad3268c5778483376b5f08c 100644
--- a/code/package.lisp
+++ b/code/package.lisp
@@ -5,7 +5,7 @@
 ;;; Carnegie Mellon University, and has been placed in the public domain.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/package.lisp,v 1.68 2003/06/07 17:56:28 toy Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/package.lisp,v 1.69 2003/06/14 14:37:00 gerd Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -352,7 +352,8 @@
 		((= i len) nil)
              (declare (type index len i))
              (when (char/= #\. (schar name i)) (return i)))))
-    (when (char= #\. (schar name 0))
+    (when (and (plusp (length name))
+	       (char= #\. (schar name 0)))
       (let* ((last-dot-position (or (find-non-dot name) (length name)))
              (n-dots last-dot-position)
              (name (subseq name last-dot-position)))
diff --git a/code/reader.lisp b/code/reader.lisp
index 26cd23709b73d5df8dc322941f4d9c22f6d875cd..1aa26aeba5995564181cbf7fd29223fcb3f63723 100644
--- a/code/reader.lisp
+++ b/code/reader.lisp
@@ -5,7 +5,7 @@
 ;;; Carnegie Mellon University, and has been placed in the public domain.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/reader.lisp,v 1.35 2003/06/14 12:21:39 gerd Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/reader.lisp,v 1.36 2003/06/14 14:37:00 gerd Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -1066,8 +1066,10 @@
 	(%reader-error stream "Too many colons in ~S"
 		      (read-buffer-to-string)))
       (setq colons 1)
-      (setq package (read-buffer-to-string))
-
+      (setq package
+	    (if (eql (char-class firstchar) #.package-delimiter)
+		*keyword-package*
+		(read-buffer-to-string)))
       (reset-read-buffer)
       (setq escapes ())
       (setq char (read-char stream nil nil))
@@ -1099,9 +1101,7 @@
       RETURN-SYMBOL
       (casify-read-buffer escapes)
       (let ((found (if package
-		       (if (zerop (length package))
-			   *keyword-package*
-			   (find-package package))
+		       (find-package package)
 		       *package*)))
 	(unless found
 	  (error 'reader-package-error :stream stream