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, |