Merge pull request #2741 from eigengrau/master

mediafile._safe_cast: be safer when converting to int
This commit is contained in:
Adrian Sampson 2017-11-19 10:50:51 -05:00
commit 60249fdcdb
3 changed files with 7 additions and 5 deletions

View file

@ -159,11 +159,8 @@ def _safe_cast(out_type, val):
elif not isinstance(val, six.string_types):
val = six.text_type(val)
# Get a number from the front of the string.
val = re.match(r'[\+-]?[0-9]*', val.strip()).group(0)
if not val:
return 0
else:
return int(val)
match = re.match(r'[\+-]?[0-9]+', val.strip())
return int(match.group(0)) if match else 0
elif out_type == bool:
try:

View file

@ -71,6 +71,8 @@ Fixes:
versions of Mutagen. :bug:`2716`
* :doc:`/plugins/fetchart`: Fix: don't skip running the fetchart plugin during import, when the
"Edit Candidates" option is used. :bug:`2734`
* Fix a crash when numeric metadata fields contain just a minus or plus sign
with no following numbers.
For developers:

View file

@ -105,6 +105,9 @@ class InvalidValueToleranceTest(unittest.TestCase):
def test_safe_cast_string_to_int(self):
self.assertEqual(_sc(int, u'something'), 0)
def test_safe_cast_string_to_int_with_no_numbers(self):
self.assertEqual(_sc(int, u'-'), 0)
def test_safe_cast_int_string_to_int(self):
self.assertEqual(_sc(int, u'20'), 20)