Update of /cvsroot/libexif/libexif/libexif
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23811/libexif
Modified Files:
exif-data.c
Log Message:
When loading an entry fails, do not add it to the IFD.
Index: exif-data.c
===================================================================
RCS file: /cvsroot/libexif/libexif/libexif/exif-data.c,v
retrieving revision 1.85
retrieving revision 1.86
diff -u -p -d -r1.85 -r1.86
--- exif-data.c 24 Jul 2005 23:34:41 -0000 1.85
+++ exif-data.c 19 Jan 2006 07:40:25 -0000 1.86
@@ -155,7 +155,7 @@ exif_data_new_from_data (const unsigned
return (edata);
}
-static void
+static int
exif_data_load_data_entry (ExifData *data, ExifEntry *entry,
const unsigned char *d,
unsigned int size, unsigned int offset)
@@ -176,7 +176,7 @@ exif_data_load_data_entry (ExifData *dat
*/
s = exif_format_get_size (entry->format) * entry->components;
if (!s)
- return;
+ return 0;
if (s > 4)
doff = exif_get_long (d + offset + 8, data->priv->order);
else
@@ -184,7 +184,7 @@ exif_data_load_data_entry (ExifData *dat
/* Sanity check */
if (size < doff + s)
- return;
+ return 0;
entry->data = exif_data_alloc (data, s);
if (entry->data) {
@@ -203,6 +203,7 @@ exif_data_load_data_entry (ExifData *dat
entry->data[6]);
data->priv->offset_mnote = doff;
}
+ return 1;
}
static void
@@ -413,9 +414,9 @@ exif_data_load_data_content (ExifData *d
break;
}
entry = exif_entry_new_mem (data->priv->mem);
- exif_data_load_data_entry (data, entry, d, ds,
- offset + 12 * i);
- exif_content_add_entry (data->ifd[ifd], entry);
+ if (exif_data_load_data_entry (data, entry, d, ds,
+ offset + 12 * i))
+ exif_content_add_entry (data->ifd[ifd], entry);
exif_entry_unref (entry);
break;
}
|