diff -r e12ecb3c672f Lib/test/test_urlparse.py --- a/Lib/test/test_urlparse.py Sat Nov 20 11:21:20 2010 -0500 +++ b/Lib/test/test_urlparse.py Sat Nov 20 15:19:48 2010 -0500 @@ -257,6 +257,7 @@ self.checkJoin(RFC3986_BASE, 'g#s','http://a/b/c/g#s') self.checkJoin(RFC3986_BASE, 'g?y#s','http://a/b/c/g?y#s') self.checkJoin(RFC3986_BASE, ';x','http://a/b/c/;x') + self.checkJoin('http://a/b/c/de', ';x','http://a/b/c/;x') self.checkJoin(RFC3986_BASE, 'g;x','http://a/b/c/g;x') self.checkJoin(RFC3986_BASE, 'g;x?y#s','http://a/b/c/g;x?y#s') self.checkJoin(RFC3986_BASE, '','http://a/b/c/d;p?q') diff -r e12ecb3c672f Lib/urllib/parse.py --- a/Lib/urllib/parse.py Sat Nov 20 11:21:20 2010 -0500 +++ b/Lib/urllib/parse.py Sat Nov 20 15:19:48 2010 -0500 @@ -260,14 +260,9 @@ if path[:1] == '/': return 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 urlunparse((scheme, netloc, path, - params, query, fragment)) + params = bparams if not query: query = bquery return urlunparse((scheme, netloc, path,