提交 caff7db9 编写于 作者: B Behdad Esfahbod

Fix Device::get_size() calculation

上级 66d6eb30
...@@ -587,7 +587,7 @@ struct Device ...@@ -587,7 +587,7 @@ struct Device
{ {
unsigned int f = deltaFormat; unsigned int f = deltaFormat;
if (HB_UNLIKELY (f < 1 || f > 3 || startSize > endSize)) return 3 * USHORT::get_size (); if (HB_UNLIKELY (f < 1 || f > 3 || startSize > endSize)) return 3 * USHORT::get_size ();
return 3 * USHORT::get_size () + ((endSize - startSize + (1 << (4 - f)) - 1) >> (4 - f)); return USHORT::get_size () * (4 + ((endSize - startSize) >> (4 - f)));
} }
inline bool sanitize (SANITIZE_ARG_DEF) { inline bool sanitize (SANITIZE_ARG_DEF) {
...@@ -598,7 +598,11 @@ struct Device ...@@ -598,7 +598,11 @@ struct Device
private: private:
USHORT startSize; /* Smallest size to correct--in ppem */ USHORT startSize; /* Smallest size to correct--in ppem */
USHORT endSize; /* Largest size to correct--in ppem */ USHORT endSize; /* Largest size to correct--in ppem */
USHORT deltaFormat; /* Format of DeltaValue array data: 1, 2, or 3 */ USHORT deltaFormat; /* Format of DeltaValue array data: 1, 2, or 3
* 1 Signed 2-bit value, 8 values per uint16
* 2 Signed 4-bit value, 4 values per uint16
* 3 Signed 8-bit value, 2 values per uint16
*/
USHORT deltaValue[VAR]; /* Array of compressed data */ USHORT deltaValue[VAR]; /* Array of compressed data */
}; };
ASSERT_SIZE_VAR (Device, 6, USHORT); ASSERT_SIZE_VAR (Device, 6, USHORT);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册