From 6b27dbf8f823248555240fbb4dbd8749b75c4463 Mon Sep 17 00:00:00 2001 From: Lutz Mueller Date: Wed, 10 Jul 2002 16:46:38 +0200 Subject: [PATCH] =?utf8?q?2002-07-10=20=20Lutz=20M=C3=BCller=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Bug spotted by Andres : * libexif/exif-data.c: Save the EXIF_TAG_INTEROPERABILITY_IFD_POINTER in ifd_exif, not in ifd0. --- libexif/exif-data.c | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/libexif/exif-data.c b/libexif/exif-data.c index d3bc614..3da02cb 100644 --- a/libexif/exif-data.c +++ b/libexif/exif-data.c @@ -263,25 +263,23 @@ exif_data_save_data_content (ExifData *data, ExifContent *ifd, { unsigned int i, n_ptr = 0, n_thumb = 0; - /* If we are to save IFD 0 or 1, we need some extra entries. */ + /* + * Check if we need some extra entries for pointers or the thumbnail. + */ if (ifd == data->ifd0) { - if (data->ifd_exif->count) + if (data->ifd_exif->count || data->ifd_interoperability->count) n_ptr++; if (data->ifd_gps->count) n_ptr++; } else if (ifd == data->ifd1) { + if (data->size) + n_thumb = 2; + } else if (ifd == data->ifd_exif) { if (data->ifd_interoperability->count) n_ptr++; } /* - * If we are to save IFD 1, we can point to the thumbnail if it - * exists. - */ - if ((ifd == data->ifd1) && data->data) - n_thumb = 2; - - /* * Allocate enough memory for all entries * and the number of entries. */ @@ -303,7 +301,8 @@ exif_data_save_data_content (ExifData *data, ExifContent *ifd, offset += 12 * ifd->count; /* Save special entries */ - if (ifd == data->ifd0 && data->ifd_exif->count) { + if (ifd == data->ifd0 && (data->ifd_exif->count || + data->ifd_interoperability->count)) { /* EXIF_TAG_EXIF_IFD_POINTER */ exif_set_short (*d + 6 + offset + 0, data->priv->order, @@ -333,7 +332,7 @@ exif_data_save_data_content (ExifData *data, ExifContent *ifd, offset += 12; } - if (ifd == data->ifd1 && data->ifd_interoperability->count) { + if (ifd == data->ifd_exif && data->ifd_interoperability->count) { /* EXIF_TAG_INTEROPERABILITY_IFD_POINTER */ exif_set_short (*d + 6 + offset + 0, data->priv->order, @@ -374,8 +373,8 @@ exif_data_save_data_content (ExifData *data, ExifContent *ifd, offset += 12; } - if (ifd == data->ifd0 && (data->ifd1->count || - data->ifd_interoperability->count)) { + if (ifd == data->ifd0 && data->ifd1->count) { + /* * We are saving IFD 0. Tell where IFD 1 starts and save * IFD 1. -- 2.7.4