Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(493)

Unified Diff: libexif/sources/libexif/olympus/mnote-olympus-entry.c

Issue 10792004: Fetch libexif 0.6.21 to include the security fixes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/
Patch Set: Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « libexif/sources/libexif/fuji/mnote-fuji-tag.c ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: libexif/sources/libexif/olympus/mnote-olympus-entry.c
===================================================================
--- libexif/sources/libexif/olympus/mnote-olympus-entry.c (revision 143189)
+++ libexif/sources/libexif/olympus/mnote-olympus-entry.c (working copy)
@@ -76,6 +76,9 @@
} \
}
+#define R2L(n) ((n).denominator ? (long)(n).numerator/(n).denominator : 0L)
+#define R2D(n) ((n).denominator ? (double)(n).numerator/(n).denominator : 0.0)
+
static const struct {
ExifTag tag;
ExifFormat fmt;
@@ -287,6 +290,9 @@
if ((!entry->data) && (entry->components > 0))
return (v);
+ if ((!entry->data) && (entry->size > 0))
+ return NULL; /* internal inconsistency error */
+
switch (entry->tag) {
/* Nikon */
@@ -369,20 +375,20 @@
CF (entry->format, EXIF_FORMAT_RATIONAL, v, maxlen);
CC (entry->components, 4, v, maxlen);
vr = exif_get_rational (entry->data, entry->order);
- r = (double)vr.numerator / vr.denominator;
+ r = R2D(vr);
vr = exif_get_rational (entry->data+8, entry->order);
- b = (double)vr.numerator / vr.denominator;
+ b = R2D(vr);
snprintf (v, maxlen, _("Red Correction %f, blue Correction %f"), r,b);
break;
case MNOTE_NIKON_TAG_MANUALFOCUSDISTANCE:
CF (entry->format, EXIF_FORMAT_RATIONAL, v, maxlen);
CC (entry->components, 1, v, maxlen);
vr = exif_get_rational (entry->data, entry->order);
- if (vr.numerator) {
- r = (double)vr.numerator / vr.denominator;
+ if (!vr.numerator || !vr.denominator) {
+ strncpy (v, _("No manual focus selection"), maxlen);
+ } else {
+ r = R2D(vr);
snprintf (v, maxlen, _("%2.2f meters"), r);
- } else {
- strncpy (v, _("No manual focus selection"), maxlen);
}
break;
case MNOTE_NIKON_TAG_SENSORPIXELSIZE:
@@ -390,8 +396,8 @@
CC (entry->components, 2, v, maxlen);
vr = exif_get_rational (entry->data, entry->order);
vr2 = exif_get_rational (entry->data+8, entry->order);
- r = (double)vr.numerator / vr.denominator;
- b = (double)vr2.numerator / vr2.denominator;
+ r = R2D(vr);
+ b = R2D(vr2);
snprintf (v, maxlen, "%2.2f x %2.2f um", r, b);
break;
case MNOTE_NIKON_TAG_BRACKETING:
@@ -447,10 +453,10 @@
if (entry->format == EXIF_FORMAT_RATIONAL) {
CC (entry->components, 1, v, maxlen);
vr = exif_get_rational (entry->data, entry->order);
- if (!vr.numerator) {
+ if (!vr.numerator || !vr.denominator) {
strncpy (v, _("None"), maxlen);
} else {
- r = (double)vr.numerator / vr.denominator;
+ r = R2D(vr);
snprintf (v, maxlen, "%2.2f", r);
}
break;
@@ -565,13 +571,13 @@
double c,d;
unsigned long a,b;
vr = exif_get_rational (entry->data, entry->order);
- a = vr.numerator / vr.denominator;
+ a = R2L(vr);
vr = exif_get_rational (entry->data+8, entry->order);
- b = vr.numerator / vr.denominator;
+ b = R2L(vr);
vr = exif_get_rational (entry->data+16, entry->order);
- c = (double)vr.numerator / vr.denominator;
+ c = R2D(vr);
vr = exif_get_rational (entry->data+24, entry->order);
- d = (double)vr.numerator / vr.denominator;
+ d = R2D(vr);
snprintf (v, maxlen, "%ld-%ldmm 1:%3.1f - %3.1f",a,b,c,d);
}
break;
@@ -679,7 +685,7 @@
CF (entry->format, EXIF_FORMAT_RATIONAL, v, maxlen);
CC (entry->components, 1, v, maxlen);
vr = exif_get_rational (entry->data, entry->order);
- if (vr.numerator == 0) {
+ if (!vr.numerator || !vr.denominator) {
strncpy (v, _("Unknown"), maxlen);
}
else {
@@ -790,7 +796,7 @@
if (!vr.denominator) {
strncpy (v, _("Infinite"), maxlen);
} else {
- r = (double)vr.numerator / vr.denominator;
+ r = R2D(vr);
snprintf (v, maxlen, "%2.3f", r);
}
break;
@@ -800,7 +806,7 @@
if (!vsr.denominator) {
strncpy (v, _("Infinite"), maxlen);
} else {
- r = (double)vsr.numerator / vsr.denominator;
+ r = R2D(vsr);
snprintf (v, maxlen, "%2.3f", r);
}
break;
« no previous file with comments | « libexif/sources/libexif/fuji/mnote-fuji-tag.c ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698