#17898: reset k and v so that the loop doesn't use an old value
This commit is contained in:
parent
2ca7bb0ba2
commit
270b0586b0
|
@ -296,11 +296,12 @@ class GNUTranslations(NullTranslations):
|
|||
# See if we're looking at GNU .mo conventions for metadata
|
||||
if mlen == 0:
|
||||
# Catalog description
|
||||
lastk = k = None
|
||||
lastk = None
|
||||
for item in tmsg.splitlines():
|
||||
item = item.strip()
|
||||
if not item:
|
||||
continue
|
||||
k = v = None
|
||||
if ':' in item:
|
||||
k, v = item.split(':', 1)
|
||||
k = k.strip().lower()
|
||||
|
|
|
@ -80,6 +80,12 @@ class GettextBaseTest(unittest.TestCase):
|
|||
del self.env
|
||||
shutil.rmtree(os.path.split(LOCALEDIR)[0])
|
||||
|
||||
GNU_MO_DATA_ISSUE_17898 = b'''\
|
||||
3hIElQAAAAABAAAAHAAAACQAAAAAAAAAAAAAAAAAAAAsAAAAggAAAC0AAAAAUGx1cmFsLUZvcm1z
|
||||
OiBucGx1cmFscz0yOyBwbHVyYWw9KG4gIT0gMSk7CiMtIy0jLSMtIyAgbWVzc2FnZXMucG8gKEVk
|
||||
WCBTdHVkaW8pICAjLSMtIy0jLSMKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVU
|
||||
Ri04CgA=
|
||||
'''
|
||||
|
||||
class GettextTestCase1(GettextBaseTest):
|
||||
def setUp(self):
|
||||
|
@ -291,6 +297,14 @@ class PluralFormsTestCase(GettextBaseTest):
|
|||
# Test for a dangerous expression
|
||||
raises(ValueError, gettext.c2py, "os.chmod('/etc/passwd',0777)")
|
||||
|
||||
class GNUTranslationParsingTest(GettextBaseTest):
|
||||
def test_plural_form_error_issue17898(self):
|
||||
with open(MOFILE, 'wb') as fp:
|
||||
fp.write(base64.decodestring(GNU_MO_DATA_ISSUE_17898))
|
||||
with open(MOFILE, 'rb') as fp:
|
||||
# If this runs cleanly, the bug is fixed.
|
||||
t = gettext.GNUTranslations(fp)
|
||||
|
||||
|
||||
class UnicodeTranslationsTest(GettextBaseTest):
|
||||
def setUp(self):
|
||||
|
@ -465,3 +479,16 @@ msgstr ""
|
|||
"Content-Transfer-Encoding: quoted-printable\n"
|
||||
"Generated-By: pygettext.py 1.3\n"
|
||||
'''
|
||||
|
||||
#
|
||||
# messages.po, used for bug 17898
|
||||
#
|
||||
|
||||
'''
|
||||
# test file for http://bugs.python.org/issue17898
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"#-#-#-#-# messages.po (EdX Studio) #-#-#-#-#\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
'''
|
||||
|
|
|
@ -21,6 +21,8 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #17898: Fix exception in gettext.py when parsing certain plural forms.
|
||||
|
||||
- Issue #23865: close() methods in multiple modules now are idempotent and more
|
||||
robust at shutdown. If needs to release multiple resources, they are released
|
||||
even if errors are occured.
|
||||
|
|
Loading…
Reference in New Issue