diff options
Diffstat (limited to 'lisp/url/url-expand.el')
-rw-r--r-- | lisp/url/url-expand.el | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/lisp/url/url-expand.el b/lisp/url/url-expand.el index 47964b081f4..be9b5426dc4 100644 --- a/lisp/url/url-expand.el +++ b/lisp/url/url-expand.el @@ -92,12 +92,19 @@ path components followed by `..' are removed, along with the `..' itself." (cond ((= (length url) 0) ; nil or empty string (url-recreate-url default)) - ((string-match url-nonrelative-link url) ; Fully-qualified URL, return it immediately + ((string-match url-nonrelative-link url) ; Fully-qualified URL, + ; return it immediately url) (t (let* ((urlobj (url-generic-parse-url url)) (inhibit-file-name-handlers t) - (expander (url-scheme-get-property (url-type default) 'expand-file-name))) + (expander (if (url-type default) + (url-scheme-get-property (url-type default) + 'expand-file-name) + ;; If neither the default nor the URL to be + ;; expanded have a protocol, then just use the + ;; identity expander as a fallback. + 'url-identity-expander))) (if (string-match "^//" url) (setq urlobj (url-generic-parse-url (concat (url-type default) ":" url)))) @@ -113,7 +120,7 @@ path components followed by `..' are removed, along with the `..' itself." ;; Well, they told us the scheme, let's just go with it. nil (setf (url-type urlobj) (or (url-type urlobj) (url-type defobj))) - (setf (url-port urlobj) (or (url-portspec urlobj) + (setf (url-portspec urlobj) (or (url-portspec urlobj) (and (string= (url-type urlobj) (url-type defobj)) (url-port defobj)))) |