Skip to content

Commit

Permalink
Changed _limit_signed_rational
Browse files Browse the repository at this point in the history
  • Loading branch information
radarhere committed Dec 31, 2019
1 parent 69fc041 commit 8924054
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 14 deletions.
6 changes: 3 additions & 3 deletions Tests/test_file_tiff_metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@ def test_ifd_signed_rational(self):
self.assertEqual(denominator, reloaded.tag_v2[37380].denominator)

# out of bounds of 4 byte signed long
numerator = -2 ** 31 - 1
numerator = -(2 ** 31) - 1
denominator = 1

info[37380] = TiffImagePlugin.IFDRational(numerator, denominator)
Expand All @@ -286,8 +286,8 @@ def test_ifd_signed_rational(self):
im.save(out, tiffinfo=info, compression="raw")

reloaded = Image.open(out)
self.assertEqual(- 2 ** 31, reloaded.tag_v2[37380].numerator)
self.assertEqual(1, reloaded.tag_v2[37380].denominator)
self.assertEqual(2 ** 31 - 1, reloaded.tag_v2[37380].numerator)
self.assertEqual(-1, reloaded.tag_v2[37380].denominator)

def test_ifd_signed_long(self):
im = hopper()
Expand Down
20 changes: 9 additions & 11 deletions src/PIL/TiffImagePlugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -263,20 +263,18 @@ def _limit_rational(val, max_val):
return n_d[::-1] if inv else n_d


def _limit_signed_rational(frac, max_val, min_val):
if frac >= 0:
return _limit_rational(frac, max_val)
def _limit_signed_rational(val, max_val, min_val):
frac = Fraction(val)
n_d = frac.numerator, frac.denominator

max_abs = max(max_val, abs(min_val))
if min(n_d) < min_val:
n_d = _limit_rational(val, abs(min_val))

num, denom = _limit_rational(frac, max_abs)
if denom == max_abs or num == max_abs:
if (num < 0 or denom < 0) and num != denom:
num, denom = num * -1, denom * -1
else:
num, denom = _limit_rational(frac, max_val)
if max(n_d) > max_val:
val = Fraction(*n_d)
n_d = _limit_rational(val, max_val)

return num, denom
return n_d


##
Expand Down

0 comments on commit 8924054

Please sign in to comment.