| Index: third_party/harfbuzz-ng/src/hb-buffer-serialize.cc
|
| diff --git a/third_party/harfbuzz-ng/src/hb-buffer-serialize.cc b/third_party/harfbuzz-ng/src/hb-buffer-serialize.cc
|
| index dc47ba73e084aef619a2b1c26c175073448a93a6..4541db23bd23f4b97196f5b37044e5d9f3fb3c6c 100644
|
| --- a/third_party/harfbuzz-ng/src/hb-buffer-serialize.cc
|
| +++ b/third_party/harfbuzz-ng/src/hb-buffer-serialize.cc
|
| @@ -33,12 +33,32 @@ static const char *serialize_formats[] = {
|
| NULL
|
| };
|
|
|
| +/**
|
| + * hb_buffer_serialize_list_formats:
|
| + *
|
| + *
|
| + *
|
| + * Return value: (transfer none):
|
| + *
|
| + * Since: 1.0
|
| + **/
|
| const char **
|
| hb_buffer_serialize_list_formats (void)
|
| {
|
| return serialize_formats;
|
| }
|
|
|
| +/**
|
| + * hb_buffer_serialize_format_from_string:
|
| + * @str:
|
| + * @len:
|
| + *
|
| + *
|
| + *
|
| + * Return value:
|
| + *
|
| + * Since: 1.0
|
| + **/
|
| hb_buffer_serialize_format_t
|
| hb_buffer_serialize_format_from_string (const char *str, int len)
|
| {
|
| @@ -46,6 +66,16 @@ hb_buffer_serialize_format_from_string (const char *str, int len)
|
| return (hb_buffer_serialize_format_t) (hb_tag_from_string (str, len) & ~0x20202020);
|
| }
|
|
|
| +/**
|
| + * hb_buffer_serialize_format_to_string:
|
| + * @format:
|
| + *
|
| + *
|
| + *
|
| + * Return value:
|
| + *
|
| + * Since: 1.0
|
| + **/
|
| const char *
|
| hb_buffer_serialize_format_to_string (hb_buffer_serialize_format_t format)
|
| {
|
| @@ -100,10 +130,10 @@ _hb_buffer_serialize_glyphs_json (hb_buffer_t *buffer,
|
| *p++ = '"';
|
| }
|
| else
|
| - p += snprintf (p, ARRAY_LENGTH (b) - (p - b), "%u", info[i].codepoint);
|
| + p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "%u", info[i].codepoint));
|
|
|
| if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS)) {
|
| - p += snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"cl\":%u", info[i].cluster);
|
| + p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"cl\":%u", info[i].cluster));
|
| }
|
|
|
| if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS))
|
| @@ -116,9 +146,9 @@ _hb_buffer_serialize_glyphs_json (hb_buffer_t *buffer,
|
|
|
| *p++ = '}';
|
|
|
| - if (buf_size > (p - b))
|
| + unsigned int l = p - b;
|
| + if (buf_size > l)
|
| {
|
| - unsigned int l = p - b;
|
| memcpy (buf, b, l);
|
| buf += l;
|
| buf_size -= l;
|
| @@ -161,26 +191,26 @@ _hb_buffer_serialize_glyphs_text (hb_buffer_t *buffer,
|
| p += strlen (p);
|
| }
|
| else
|
| - p += snprintf (p, ARRAY_LENGTH (b) - (p - b), "%u", info[i].codepoint);
|
| + p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "%u", info[i].codepoint));
|
|
|
| if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS)) {
|
| - p += snprintf (p, ARRAY_LENGTH (b) - (p - b), "=%u", info[i].cluster);
|
| + p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "=%u", info[i].cluster));
|
| }
|
|
|
| if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS))
|
| {
|
| if (pos[i].x_offset || pos[i].y_offset)
|
| - p += snprintf (p, ARRAY_LENGTH (b) - (p - b), "@%d,%d", pos[i].x_offset, pos[i].y_offset);
|
| + p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "@%d,%d", pos[i].x_offset, pos[i].y_offset));
|
|
|
| *p++ = '+';
|
| - p += snprintf (p, ARRAY_LENGTH (b) - (p - b), "%d", pos[i].x_advance);
|
| + p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "%d", pos[i].x_advance));
|
| if (pos->y_advance)
|
| - p += snprintf (p, ARRAY_LENGTH (b) - (p - b), ",%d", pos[i].y_advance);
|
| + p += MAX (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",%d", pos[i].y_advance));
|
| }
|
|
|
| - if (buf_size > (p - b))
|
| + unsigned int l = p - b;
|
| + if (buf_size > l)
|
| {
|
| - unsigned int l = p - b;
|
| memcpy (buf, b, l);
|
| buf += l;
|
| buf_size -= l;
|
| @@ -194,6 +224,24 @@ _hb_buffer_serialize_glyphs_text (hb_buffer_t *buffer,
|
| }
|
|
|
| /* Returns number of items, starting at start, that were serialized. */
|
| +/**
|
| + * hb_buffer_serialize_glyphs:
|
| + * @buffer: a buffer.
|
| + * @start:
|
| + * @end:
|
| + * @buf: (array length=buf_size):
|
| + * @buf_size:
|
| + * @buf_consumed: (out):
|
| + * @font:
|
| + * @format:
|
| + * @flags:
|
| + *
|
| + *
|
| + *
|
| + * Return value:
|
| + *
|
| + * Since: 1.0
|
| + **/
|
| unsigned int
|
| hb_buffer_serialize_glyphs (hb_buffer_t *buffer,
|
| unsigned int start,
|
| @@ -286,6 +334,21 @@ parse_int (const char *pp, const char *end, int32_t *pv)
|
| #include "hb-buffer-deserialize-json.hh"
|
| #include "hb-buffer-deserialize-text.hh"
|
|
|
| +/**
|
| + * hb_buffer_deserialize_glyphs:
|
| + * @buffer: a buffer.
|
| + * @buf: (array length=buf_len):
|
| + * @buf_len:
|
| + * @end_ptr: (out):
|
| + * @font:
|
| + * @format:
|
| + *
|
| + *
|
| + *
|
| + * Return value:
|
| + *
|
| + * Since: 1.0
|
| + **/
|
| hb_bool_t
|
| hb_buffer_deserialize_glyphs (hb_buffer_t *buffer,
|
| const char *buf,
|
|
|