Be a bit more robust in the face of out-of-memory errors.
[platform/upstream/libexif.git] / test / test-mem.c
index 77d4c2d..e94df35 100644 (file)
@@ -1,6 +1,6 @@
 /* test-mem.c
  *
- * Copyright © 2002 Lutz Müller <lutz@users.sourceforge.net>
+ * Copyright (c) 2002 Lutz Mueller <lutz@users.sourceforge.net>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -14,8 +14,8 @@
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA  02110-1301  USA.
  */
 
 #include <config.h>
 #include <stdlib.h>
 
 int
-main (int argc, char **argv)
+main ()
 {
        ExifData *ed;
-       ExifEntry *e;
+       /* ExifEntry *e; */
        unsigned char *eb, size[2];
        unsigned int ebs;
        ExifLoader *loader;
@@ -39,24 +39,24 @@ main (int argc, char **argv)
 
        printf ("Creating EXIF data...\n");
        ed = exif_data_new ();
+       if (!ed) {
+               fprintf(stderr, "Out of memory\n");
+               exit(13);
+       }
 
-       printf ("Creating EXIF entry...\n");
-       e = exif_entry_new ();
-       exif_content_add_entry (ed->ifd[EXIF_IFD_0], e);
-       exif_entry_initialize (e, EXIF_TAG_EXIF_VERSION);
-       exif_entry_unref (e);
+       exif_data_set_data_type (ed, EXIF_DATA_TYPE_UNCOMPRESSED_CHUNKY);
 
-       printf ("Creating another EXIF entry...\n");
-       e = exif_entry_new ();
-       exif_content_add_entry (ed->ifd[EXIF_IFD_0], e);
-       exif_entry_initialize (e, EXIF_TAG_DATE_TIME);
-       exif_entry_unref (e);
+       printf ("Fill EXIF data with all necessary entries to follow specs...\n");
+       exif_data_fix (ed);
 
-       printf ("Creating an EXIF entry in the EXIF IFD...\n");
-       e = exif_entry_new ();
-       exif_content_add_entry (ed->ifd[EXIF_IFD_EXIF], e);
-       exif_entry_initialize (e, EXIF_TAG_FLASH_PIX_VERSION);
-       exif_entry_unref (e);
+       /* Add a dummy thumbnail */
+       ed->size = 4;
+       ed->data = calloc(1, ed->size);
+       if (!ed->data) {
+               fprintf(stderr, "Out of memory\n");
+               exif_data_unref (ed);
+               exit(13);
+       }
 
        exif_data_dump (ed);
 
@@ -66,13 +66,22 @@ main (int argc, char **argv)
 
        printf ("Writing %i byte(s) EXIF data to loader...\n", ebs);
        loader = exif_loader_new ();
-       size[0] = ebs;
-       size[1] = ebs << 8;
+       if (!loader) {
+               fprintf(stderr, "Out of memory\n");
+               free (eb);
+               exit(13);
+       }
+       size[0] = (unsigned char) ebs;
+       size[1] = (unsigned char) (ebs >> 8);
        exif_loader_write (loader, size, 2);
        for (i = 0; i < ebs && exif_loader_write (loader, eb + i, 1); i++);
        printf ("Wrote %i byte(s).\n", i);
        free (eb);
        ed = exif_loader_get_data (loader);
+       if (!ed) {
+               fprintf(stderr, "Out of memory\n");
+               exit(13);
+       }
        exif_loader_unref (loader);
        exif_data_dump (ed);
        exif_data_unref (ed);