diff --git a/libexif/exif-data.c b/libexif/exif-data.c index 4c6786f8fac1e49c4ee7ab5d69210ac250c9abb1..50684e976e46f949a730ae0180b4ac4992afeeef 100644 --- a/libexif/exif-data.c +++ b/libexif/exif-data.c @@ -730,6 +730,7 @@ exif_data_save_data_content (ExifData *data, ExifContent *ifd, unsigned char *t; unsigned int ts; unsigned int icount = 0; + unsigned long thumbnail_offset_new = 0; if (!data || !data->priv || !ifd || !d || !ds) return; @@ -895,6 +896,7 @@ exif_data_save_data_content (ExifData *data, ExifContent *ifd, 1); exif_set_long (*d + 6 + offset + 8, data->priv->order, *ds - 6); + thumbnail_offset_new = *ds - 6; ts = *ds + data->size; t = exif_mem_realloc (data->priv->mem, *d, ts); if (!t) { @@ -942,6 +944,15 @@ exif_data_save_data_content (ExifData *data, ExifContent *ifd, *ds - 6); } else exif_set_long (*d + 6 + offset, data->priv->order, 0); + + if (i == EXIF_IFD_1 && data->size) { + ifd->count = ifd->count + icount; + for (j = 0; j < ifd->count; j++) { + if (ifd->entries[j]->tag == EXIF_TAG_JPEG_INTERCHANGE_FORMAT) { + exif_set_long (ifd->entries[j]->data, data->priv->order, thumbnail_offset_new); + } + } + } } static void