]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/layout/DeviceTables.cpp
ICU-57132.0.1.tar.gz
[apple/icu.git] / icuSources / layout / DeviceTables.cpp
index a26b3be347a59673c761d582421f0a76bf7f35a5..0bbbf18149645e9ada955f6864eeed240701a685 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * @(#)DeviceTables.cpp 1.5 00/03/15
  *
- * (C) Copyright IBM Corp. 1998 - 2005 - All Rights Reserved
+ * (C) Copyright IBM Corp. 1998 - 2006 - All Rights Reserved
  *
  */
 
@@ -16,13 +16,15 @@ const le_uint16 DeviceTable::fieldMasks[]    = {0x0003, 0x000F, 0x00FF};
 const le_uint16 DeviceTable::fieldSignBits[] = {0x0002, 0x0008, 0x0080};
 const le_uint16 DeviceTable::fieldBits[]     = {     2,      4,      8};
 
+#define FORMAT_COUNT LE_ARRAY_SIZE(fieldBits)
+
 le_int16 DeviceTable::getAdjustment(le_uint16 ppem) const
 {
     le_uint16 start = SWAPW(startSize);
     le_uint16 format = SWAPW(deltaFormat) - 1;
     le_int16 result = 0;
     
-    if (ppem >= start && ppem <= SWAPW(endSize)) {
+    if (ppem >= start && ppem <= SWAPW(endSize) && format < FORMAT_COUNT) {
         le_uint16 sizeIndex = ppem - start;
         le_uint16 bits = fieldBits[format];
         le_uint16 count = 16 / bits;