diff --git a/mercurial/util.py b/mercurial/util.py
index 41c3a71c318de27961ba01f94501f463b7e58ff3_bWVyY3VyaWFsL3V0aWwucHk=..28edd65000d984b381a85fd847cfda8efeabd8a8_bWVyY3VyaWFsL3V0aWwucHk= 100644
--- a/mercurial/util.py
+++ b/mercurial/util.py
@@ -1353,6 +1353,8 @@
     <url scheme: 'ssh', host: '[::1]', port: '2200', path: '/home/joe/repo'>
     >>> url('file:///home/joe/repo')
     <url scheme: 'file', path: '/home/joe/repo'>
+    >>> url('file:///c:/temp/foo/')
+    <url scheme: 'file', path: 'c:/temp/foo/'>
     >>> url('bundle:foo')
     <url scheme: 'bundle', path: 'foo'>
     >>> url('bundle://../foo')
@@ -1442,7 +1444,7 @@
                     path = None
                 if not self.host:
                     self.host = None
-                    if path:
+                    if path and not hasdriveletter(path):
                         path = '/' + path
 
             if self.host and '@' in self.host: