File canon-mnote.patch of Package libexif5

diff -ru libexif-0.5.12/libexif/exif-data.c libexif-0.5.12.new/libexif/exif-data.c
--- libexif-0.5.12/libexif/exif-data.c	2004-02-23 16:39:48.000000000 +0000
+++ libexif-0.5.12.new/libexif/exif-data.c	2004-06-17 15:11:19.267652388 +0000
@@ -168,7 +179,16 @@
 	 * Size? If bigger than 4 bytes, the actual data is not in
 	 * the entry but somewhere else.
 	 */
-	s = exif_format_get_size (e->format) * e->components;
+	if ((e->tag == EXIF_TAG_MAKER_NOTE) && data->priv->md) {
+		free (e->data);
+		e->data = NULL;
+		e->size = 0;
+		exif_mnote_data_set_offset (data->priv->md, *ds - 6);
+		exif_mnote_data_save (data->priv->md, &e->data, &e->size);
+		s = e->size;
+	} else {
+		s = exif_format_get_size (e->format) * e->components;
+	}
 	if (!s)
 		return;
 	if (s > 4) {
@@ -180,15 +200,6 @@
 	} else
 		doff = offset + 8;
 
-	/* If this is the maker note tag, update it. */
-	if ((e->tag == EXIF_TAG_MAKER_NOTE) && data->priv->md) {
-		free (e->data);
-		e->data = NULL;
-		e->size = 0;
-		exif_mnote_data_set_offset (data->priv->md, doff);
-		exif_mnote_data_save (data->priv->md, &e->data, &e->size);
-	}
-
 	/* Write the data. Fill unneeded bytes with 0. */
 	memcpy (*d + 6 + doff, e->data, e->size);
 	if (s < 4) memset (*d + 6 + doff + s, 0, (4 - s));
openSUSE Build Service is sponsored by