| Index: third_party/harfbuzz-ng/src/hb-buffer.cc
|
| diff --git a/third_party/harfbuzz-ng/src/hb-buffer.cc b/third_party/harfbuzz-ng/src/hb-buffer.cc
|
| index 50710dd23e5ebca6525954789a35e3535f990b70..5c71734b9de9a1d61b8c36deb40f376a31cc8bcf 100644
|
| --- a/third_party/harfbuzz-ng/src/hb-buffer.cc
|
| +++ b/third_party/harfbuzz-ng/src/hb-buffer.cc
|
| @@ -91,6 +91,11 @@ hb_buffer_t::enlarge (unsigned int size)
|
| {
|
| if (unlikely (in_error))
|
| return false;
|
| + if (unlikely (size > max_len))
|
| + {
|
| + in_error = true;
|
| + return false;
|
| + }
|
|
|
| unsigned int new_allocated = allocated;
|
| hb_glyph_position_t *new_pos = NULL;
|
| @@ -198,6 +203,7 @@ hb_buffer_t::clear (void)
|
|
|
| hb_segment_properties_t default_props = HB_SEGMENT_PROPERTIES_DEFAULT;
|
| props = default_props;
|
| + scratch_flags = HB_BUFFER_SCRATCH_FLAG_DEFAULT;
|
|
|
| content_type = HB_BUFFER_CONTENT_TYPE_INVALID;
|
| in_error = false;
|
| @@ -714,6 +720,8 @@ hb_buffer_create (void)
|
| if (!(buffer = hb_object_create<hb_buffer_t> ()))
|
| return hb_buffer_get_empty ();
|
|
|
| + buffer->max_len = HB_BUFFER_MAX_LEN_DEFAULT;
|
| +
|
| buffer->reset ();
|
|
|
| return buffer;
|
| @@ -738,6 +746,8 @@ hb_buffer_get_empty (void)
|
| HB_BUFFER_FLAG_DEFAULT,
|
| HB_BUFFER_CLUSTER_LEVEL_DEFAULT,
|
| HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT,
|
| + HB_BUFFER_SCRATCH_FLAG_DEFAULT,
|
| + HB_BUFFER_MAX_LEN_DEFAULT,
|
|
|
| HB_BUFFER_CONTENT_TYPE_INVALID,
|
| HB_SEGMENT_PROPERTIES_DEFAULT,
|
|
|