Fix Issue9721 - urljoin behavior when the relative url starts with ';'
diff --git a/Lib/test/test_urlparse.py b/Lib/test/test_urlparse.py
index 73e4de5..f9f97b1 100644
--- a/Lib/test/test_urlparse.py
+++ b/Lib/test/test_urlparse.py
@@ -327,6 +327,9 @@
#self.checkJoin(RFC3986_BASE, 'http:g','http:g') # strict parser
self.checkJoin(RFC3986_BASE, 'http:g','http://a/b/c/g') #relaxed parser
+ # Test for issue9721
+ self.checkJoin('http://a/b/c/de', ';x','http://a/b/c/;x')
+
def test_urljoins(self):
self.checkJoin(SIMPLE_BASE, 'g:h','g:h')
self.checkJoin(SIMPLE_BASE, 'http:g','http://a/b/c/g')
diff --git a/Lib/urllib/parse.py b/Lib/urllib/parse.py
index eedd071..42f8193 100644
--- a/Lib/urllib/parse.py
+++ b/Lib/urllib/parse.py
@@ -411,14 +411,9 @@
if path[:1] == '/':
return _coerce_result(urlunparse((scheme, netloc, path,
params, query, fragment)))
- if not path:
+ if not path and not params:
path = bpath
- if not params:
- params = bparams
- else:
- path = path[:-1]
- return _coerce_result(urlunparse((scheme, netloc, path,
- params, query, fragment)))
+ params = bparams
if not query:
query = bquery
return _coerce_result(urlunparse((scheme, netloc, path,