aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Allan Webber <cwebber@dustycloud.org>2015-04-27 17:26:59 -0500
committerChristopher Allan Webber <cwebber@dustycloud.org>2015-04-27 17:26:59 -0500
commitfd4ddeb14ed0f7548158680179df9f5a40902599 (patch)
tree76400f326f91d59232839e8dd1d7078f2217f5ba
parentab62a7c0d2fe227902b13b849a569bd5ef542f75 (diff)
downloadmediagoblin-fd4ddeb14ed0f7548158680179df9f5a40902599.tar.lz
mediagoblin-fd4ddeb14ed0f7548158680179df9f5a40902599.tar.xz
mediagoblin-fd4ddeb14ed0f7548158680179df9f5a40902599.zip
#5314 Prevent ZeroDivisionError in exif.py
-rw-r--r--mediagoblin/tools/exif.py11
1 files changed, 8 insertions, 3 deletions
diff --git a/mediagoblin/tools/exif.py b/mediagoblin/tools/exif.py
index ec83f43c..fafd987d 100644
--- a/mediagoblin/tools/exif.py
+++ b/mediagoblin/tools/exif.py
@@ -142,6 +142,11 @@ def get_gps_data(tags):
"""
Processes EXIF data returned by EXIF.py
"""
+ def safe_gps_ratio_divide(ratio):
+ if ratio.den == 0:
+ return 0.0
+ return float(ratio.num) / float(ratio.den)
+
gps_data = {}
if not 'Image GPSInfo' in tags:
@@ -155,9 +160,9 @@ def get_gps_data(tags):
for key, dat in six.iteritems(dms_data):
gps_data[key] = (
lambda v:
- float(v[0].num) / float(v[0].den) \
- + (float(v[1].num) / float(v[1].den) / 60) \
- + (float(v[2].num) / float(v[2].den) / (60 * 60))
+ safe_gps_ratio_divide(v[0]) \
+ + (safe_gps_ratio_divide(v[1]) / 60) \
+ + (safe_gps_ratio_divide(v[2]) / (60 * 60))
)(dat.values)
if tags['GPS GPSLatitudeRef'].values == 'S':