diff --git a/asdf.asd b/asdf.asd
index 22317294af74fae5b2da84ef5055938ab6518798..457cb4cbd158c82a99f81429b57483b9708acc76 100644
--- a/asdf.asd
+++ b/asdf.asd
@@ -93,7 +93,7 @@
   :licence "MIT"
   :description "Another System Definition Facility"
   :long-description "ASDF builds Common Lisp software organized into defined systems."
-  :version "3.3.4.19" ;; to be automatically updated by make bump-version
+  :version "3.3.5" ;; to be automatically updated by make bump-version
   :depends-on ()
   :components ((:module "build" :components ((:file "asdf"))))
   . #-asdf3 () #+asdf3
diff --git a/doc/asdf.texinfo b/doc/asdf.texinfo
index fd39a0083590b14fd8cd46c44a6d6a50999247ac..c1ff4126784aec7bc9a6073cf85b788561ceacbf 100644
--- a/doc/asdf.texinfo
+++ b/doc/asdf.texinfo
@@ -65,7 +65,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 @titlepage
 @title ASDF: Another System Definition Facility
-@subtitle Manual for Version 3.3.4.19
+@subtitle Manual for Version 3.3.5
 @c The following two commands start the copyright page.
 @page
 @vskip 0pt plus 1filll
@@ -82,7 +82,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 @node Top, Introduction, (dir), (dir)
 @top ASDF: Another System Definition Facility
 @ifnottex
-Manual for Version 3.3.4.19
+Manual for Version 3.3.5
 @end ifnottex
 
 
diff --git a/header.lisp b/header.lisp
index bcc3cf12baff8739c021f8c4acf2a3feb406c353..1f7d95c4bfc38940ec6cb8162becb4c69e570fae 100644
--- a/header.lisp
+++ b/header.lisp
@@ -1,5 +1,5 @@
 ;;; -*- mode: Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp ; Package: CL-USER ; buffer-read-only: t; -*-
-;;; This is ASDF 3.3.4.19: Another System Definition Facility.
+;;; This is ASDF 3.3.5: Another System Definition Facility.
 ;;;
 ;;; Feedback, bug reports, and patches are all welcome:
 ;;; please mail to <asdf-devel@common-lisp.net>.
diff --git a/test/script-support.lisp b/test/script-support.lisp
index e64d7671ee6d7d4f98939176b010dfe6c970fb25..81aeacfb3dbd99628ef2966d7ecf907a717c11d9 100644
--- a/test/script-support.lisp
+++ b/test/script-support.lisp
@@ -151,6 +151,9 @@ Some constraints:
        (assert-equal ',condition (type-of ,x))
        ,x)))
 (defmacro with-expected-failure ((&optional condition) &body body)
+  "If CONDITION is non-NIL, then the BODY is expected to fail, and an error will be
+raised if it *succeeds*.  If non-NIL, CONDITION should evaluate to something that
+explains the unexpected success -- typically a string."
   `(call-with-expected-failure ,condition (lambda () ,@body)))
 (defun call-with-expected-failure (condition thunk)
   (if condition
diff --git a/test/test-utilities.script b/test/test-utilities.script
index f0b1befb3b493d801ec94c023ac43e858b8ad350..09a0334702c45c1bdabbf3bf9efef2463833e664 100644
--- a/test/test-utilities.script
+++ b/test/test-utilities.script
@@ -332,22 +332,32 @@
   (assert-pathnames-equal directory-a-no-slash (list (subpathname *build-directory* "deleteme/a/1.x")))
   (assert-pathnames-equal directory-b-no-slash (list (subpathname *build-directory* "deleteme/a/b/2"))))
 
+(DBG "Test oddball characters in pathnames")
+;; let* ((oddball-pathname (merge-pathnames (make-pathname :directory '(:relative "/[foo"))
+;;                                          (subpathname *build-directory* "deleteme/")))
+;;       (oddball-namestring (namestring oddball-pathname)))
+;; (DBG "Oddball pathname is " oddball-pathname)
+;; (DBG "Oddball namestring is " oddball-namestring)
+;; (ensure-directories-exist oddball-pathname)
+;; (assert (directory-exists-p oddball-pathname))
+;; (pathname oddball-namestring)
+;; (assert-equal nil (uiop:subdirectories oddball-namestring))
+(with-expected-failure ("UIOP:SUBDIRECTORIES does not handle non-standard pathnames.")
+    (assert-equal nil (uiop:subdirectories "/[foo")))
+
 (DBG "check to make sure WITH-CURRENT-DIRECTORY checks its parameter for directory pathname")
 (let ((directory-a-no-slash (subpathname *build-directory* "deleteme/a"))
       (directory-b-no-slash (subpathname *build-directory* "deleteme/a/b")))
   (assert (eq 'with-current-directory 'uiop:with-current-directory))
   (with-current-directory (directory-a-no-slash)
-    (with-expected-failure ()
-      (assert-pathnames-equal (directory-files (getcwd))  (list (subpathname *build-directory* "deleteme/a/1.x")))))
+    (assert-pathnames-equal (directory-files (getcwd))  (list (subpathname *build-directory* "deleteme/a/1.x"))))
   (with-current-directory (directory-b-no-slash)
-    (with-expected-failure ()
-      (assert-pathnames-equal (directory-files (getcwd)) (list (subpathname *build-directory* "deleteme/a/b/2"))))
-    (with-expected-failure ()
-      (assert-pathnames-equal
-       (sort (subdirectories (getcwd)) #'string< :key #'(lambda (x) (car (last (pathname-directory x)))))
-       (list (subpathname *build-directory* "deleteme/a/b/c/")
-             (subpathname *build-directory* "deleteme/a/b/d/")
-             (subpathname *build-directory* "deleteme/a/b/e/"))))))
+    (assert-pathnames-equal (directory-files (getcwd)) (list (subpathname *build-directory* "deleteme/a/b/2")))
+    (assert-pathnames-equal
+     (sort (subdirectories (getcwd)) #'string< :key #'(lambda (x) (car (last (pathname-directory x)))))
+     (list (subpathname *build-directory* "deleteme/a/b/c/")
+           (subpathname *build-directory* "deleteme/a/b/d/")
+           (subpathname *build-directory* "deleteme/a/b/e/")))))
 
 
 (DBG "check to make sure SUBDIRECTORIES does list subdirectories")
diff --git a/uiop/pathname.lisp b/uiop/pathname.lisp
index 1daf98cc22f463d1617de685d8e1e806f6329b17..3799c3f7d6411f14a77eec828ca54e57532ff1eb 100644
--- a/uiop/pathname.lisp
+++ b/uiop/pathname.lisp
@@ -417,7 +417,7 @@ For an empty type, *UNSPECIFIC-PATHNAME-TYPE* is returned."
 Unix syntax is used whether or not the underlying system is Unix;
 on such non-Unix systems it is reliably usable only for relative pathnames.
 This function is especially useful to manipulate relative pathnames portably,
-where it is of crucial to possess a portable pathname syntax independent of the underlying OS.
+where it is crucial to possess a portable pathname syntax independent of the underlying OS.
 This is what PARSE-UNIX-NAMESTRING provides, and why we use it in ASDF.
 
 When given a PATHNAME object, just return it untouched.
diff --git a/uiop/version.lisp b/uiop/version.lisp
index 8ba760678647fa085fc4710197a177844963576f..ca5c9ecf1c5ffcb9cc9d2e3185a44eb3de60c3d9 100644
--- a/uiop/version.lisp
+++ b/uiop/version.lisp
@@ -12,7 +12,7 @@
 (in-package :uiop/version)
 
 (with-upgradability ()
-  (defparameter *uiop-version* "3.3.4.19")
+  (defparameter *uiop-version* "3.3.5")
 
   (defun unparse-version (version-list)
     "From a parsed version (a list of natural numbers), compute the version string"
diff --git a/upgrade.lisp b/upgrade.lisp
index 9ac38e4e21bd9061f11ae67f258b809f72ab2372..246d1913ed9bfe50bbfdc3152d92a571214cc940 100644
--- a/upgrade.lisp
+++ b/upgrade.lisp
@@ -94,7 +94,7 @@ previously-loaded version of ASDF."
          ;; "3.4.5.67" would be a development version in the official branch, on top of 3.4.5.
          ;; "3.4.5.0.8" would be your eighth local modification of official release 3.4.5
          ;; "3.4.5.67.8" would be your eighth local modification of development version 3.4.5.67
-         (asdf-version "3.3.4.19")
+         (asdf-version "3.3.5")
          (existing-version (asdf-version)))
     (setf *asdf-version* asdf-version)
     (when (and existing-version (not (equal asdf-version existing-version)))
diff --git a/version.lisp-expr b/version.lisp-expr
index 240196b5e5fa330b9c4d82c9bbfc3353caef89d4..f0645b634843fd6a2e7f0939797e5ecde6fdbf35 100644
--- a/version.lisp-expr
+++ b/version.lisp-expr
@@ -1,2 +1,2 @@
-"3.3.4.19"
+"3.3.5"