Fixed #29006 -- Fixed DecimalField.clean() crash on sNaN values.

This commit is contained in:
Fabio Bonelli 2018-01-10 19:06:47 -05:00 committed by Tim Graham
parent 1c95737ebe
commit c886f3dee3
2 changed files with 2 additions and 1 deletions

View File

@ -351,7 +351,7 @@ class DecimalField(IntegerField):
super().validate(value)
if value in self.empty_values:
return
if not math.isfinite(value):
if value.is_nan() or not math.isfinite(value):
raise ValidationError(self.error_messages['invalid'], code='invalid')
def widget_attrs(self, widget):

View File

@ -51,6 +51,7 @@ class DecimalFieldTest(FormFieldAssertionsMixin, SimpleTestCase):
f = DecimalField(max_digits=4, decimal_places=2)
values = (
'-NaN', 'NaN', '+NaN',
'-sNaN', 'sNaN', '+sNaN',
'-Inf', 'Inf', '+Inf',
'-Infinity', 'Infinity', '+Infinity',
'a', 'łąść', '1.0a', '--0.12',