Fix ifd validity check, comment on purpose of EXIF_IFD_COUNT
authorHans Ulrich Niedermann <hun@n-dimensional.de>
Wed, 27 Jun 2007 11:14:35 +0000 (13:14 +0200)
committerHans Ulrich Niedermann <hun@n-dimensional.de>
Wed, 27 Jun 2007 11:14:35 +0000 (13:14 +0200)
libexif/exif-data.c
libexif/exif-ifd.h

index 871f1cd..8c951b7 100644 (file)
@@ -338,21 +338,10 @@ exif_data_load_data_content (ExifData *data, ExifIfd ifd,
 
        if (!data || !data->priv) 
                return;
-       /* check for valid ExifIfd enum range
-        * if ((((int)ifd) < 0) || (ifd >= EXIF_IFD_COUNT))
-        * return;
-       */
-       switch (ifd) {
-       case EXIF_IFD_0:
-       case EXIF_IFD_1:
-       case EXIF_IFD_EXIF:
-       case EXIF_IFD_GPS:
-       case EXIF_IFD_INTEROPERABILITY:
-       case EXIF_IFD_COUNT:
-         break;
-       default:
+
+       /* check for valid ExifIfd enum range */
+       if (( ((int)ifd) < 0) || ( ((int)ifd) >= EXIF_IFD_COUNT))
          return;
-       }
 
        if (recursion_depth > 150) {
                exif_log (data->priv->log, EXIF_LOG_CODE_CORRUPT_DATA, "ExifData",
index 01f0019..0cf37d8 100644 (file)
 #define __EXIF_IFD_H__
 
 typedef enum {
-       EXIF_IFD_0 = 0,
-       EXIF_IFD_1,
-       EXIF_IFD_EXIF,
-       EXIF_IFD_GPS,
-       EXIF_IFD_INTEROPERABILITY,
-       EXIF_IFD_COUNT
+       EXIF_IFD_0 = 0,                /*!< */
+       EXIF_IFD_1,                    /*!< */
+       EXIF_IFD_EXIF,                 /*!< */
+       EXIF_IFD_GPS,                  /*!< */
+       EXIF_IFD_INTEROPERABILITY,     /*!< */
+       EXIF_IFD_COUNT                 /*!< Not a real value, just (max_value + 1). */
 } ExifIfd;
 
 const char *exif_ifd_get_name (ExifIfd ifd);