From: Marcus M. <mar...@us...> - 2006-01-19 07:40:32
|
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; } |