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));