Behdad Esfahbod 6 years ago
parent af727b4e62
commit cb4bf85b14
  1. 9
      src/hb-ot-hdmx-table.hh

@ -66,12 +66,9 @@ struct DeviceRecord
if (unlikely (i >= len ())) return nullptr; if (unlikely (i >= len ())) return nullptr;
hb_codepoint_t gid = this->subset_plan->glyphs [i]; hb_codepoint_t gid = this->subset_plan->glyphs [i];
const HBUINT8* width = &(this->source_device_record->widthsZ[gid]); if (gid >= sizeDeviceRecord - DeviceRecord::min_size)
if (width < ((const HBUINT8 *) this->source_device_record) + sizeDeviceRecord)
return width;
else
return nullptr; return nullptr;
return &(this->source_device_record->widthsZ[gid]);
} }
}; };
@ -135,6 +132,8 @@ struct hdmx
inline const DeviceRecord& operator [] (unsigned int i) const inline const DeviceRecord& operator [] (unsigned int i) const
{ {
/* XXX Null(DeviceRecord) is NOT safe as it's num-glyphs lengthed.
* https://github.com/harfbuzz/harfbuzz/issues/1300 */
if (unlikely (i >= numRecords)) return Null (DeviceRecord); if (unlikely (i >= numRecords)) return Null (DeviceRecord);
return StructAtOffset<DeviceRecord> (&this->firstDeviceRecord, i * sizeDeviceRecord); return StructAtOffset<DeviceRecord> (&this->firstDeviceRecord, i * sizeDeviceRecord);
} }

Loading…
Cancel
Save