Fixed #32866 -- Fixed trimming trailing punctuation from escaped string in urlize().

This commit is contained in:
Shipeng Feng 2021-07-07 17:19:33 +08:00 committed by GitHub
parent c51bf80d56
commit 68cc04887b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 2 deletions

View File

@ -283,8 +283,9 @@ def urlize(text, trim_url_limit=None, nofollow=False, autoescape=False):
middle_unescaped = html.unescape(middle)
stripped = middle_unescaped.rstrip(TRAILING_PUNCTUATION_CHARS)
if middle_unescaped != stripped:
trail = middle[len(stripped):] + trail
middle = middle[:len(stripped) - len(middle_unescaped)]
punctuation_count = len(middle_unescaped) - len(stripped)
trail = middle[-punctuation_count:] + trail
middle = middle[:-punctuation_count]
trimmed_something = True
return lead, middle, trail

View File

@ -250,6 +250,10 @@ class TestUtilsHtml(SimpleTestCase):
'Search for google.com/?q=! and see.',
'Search for <a href="http://google.com/?q=">google.com/?q=</a>! and see.'
),
(
'Search for google.com/?q=1&lt! and see.',
'Search for <a href="http://google.com/?q=1%3C">google.com/?q=1&lt</a>! and see.'
),
(
lazystr('Search for google.com/?q=!'),
'Search for <a href="http://google.com/?q=">google.com/?q=</a>!'