[deserialize] Some more
diff --git a/src/hb-buffer-deserialize-text-glyphs.hh b/src/hb-buffer-deserialize-text-glyphs.hh
index 6cbb64a..5fe7565 100644
--- a/src/hb-buffer-deserialize-text-glyphs.hh
+++ b/src/hb-buffer-deserialize-text-glyphs.hh
@@ -322,7 +322,7 @@
const char **end_ptr,
hb_font_t *font)
{
- const char *p = buf, *pe = buf + buf_len, *eof = pe;
+ const char *p = buf, *pe = buf + buf_len, *eof = pe, *orig_pe = pe;
/* Ensure we have positions. */
(void) hb_buffer_get_glyph_positions (buffer, nullptr);
@@ -677,6 +677,13 @@
#line 136 "hb-buffer-deserialize-text-glyphs.rl"
+ if (pe < orig_pe && *pe == ']')
+ {
+ pe++;
+ if (p == pe)
+ p++;
+ }
+
*end_ptr = p;
return p == pe;
diff --git a/src/hb-buffer-deserialize-text-glyphs.rl b/src/hb-buffer-deserialize-text-glyphs.rl
index e42f554..21db14b 100644
--- a/src/hb-buffer-deserialize-text-glyphs.rl
+++ b/src/hb-buffer-deserialize-text-glyphs.rl
@@ -104,7 +104,7 @@
const char **end_ptr,
hb_font_t *font)
{
- const char *p = buf, *pe = buf + buf_len, *eof = pe;
+ const char *p = buf, *pe = buf + buf_len, *eof = pe, *orig_pe = pe;
/* Ensure we have positions. */
(void) hb_buffer_get_glyph_positions (buffer, nullptr);
@@ -135,6 +135,13 @@
write exec;
}%%
+ if (pe < orig_pe && *pe == ']')
+ {
+ pe++;
+ if (p == pe)
+ p++;
+ }
+
*end_ptr = p;
return p == pe;
diff --git a/src/hb-buffer-deserialize-text-unicode.hh b/src/hb-buffer-deserialize-text-unicode.hh
index 05711ca..8ca73bf 100644
--- a/src/hb-buffer-deserialize-text-unicode.hh
+++ b/src/hb-buffer-deserialize-text-unicode.hh
@@ -172,7 +172,7 @@
const char **end_ptr,
hb_font_t *font)
{
- const char *p = buf, *pe = buf + buf_len, *eof = pe;
+ const char *p = buf, *pe = buf + buf_len, *eof = pe, *orig_pe = pe;
while (p < pe && ISSPACE (*p))
p++;
@@ -317,6 +317,13 @@
#line 115 "hb-buffer-deserialize-text-unicode.rl"
+ if (pe < orig_pe && *pe == '>')
+ {
+ pe++;
+ if (p == pe)
+ p++;
+ }
+
*end_ptr = p;
return p == pe;
diff --git a/src/hb-buffer-deserialize-text-unicode.rl b/src/hb-buffer-deserialize-text-unicode.rl
index d358adc..92873b8 100644
--- a/src/hb-buffer-deserialize-text-unicode.rl
+++ b/src/hb-buffer-deserialize-text-unicode.rl
@@ -85,7 +85,7 @@
const char **end_ptr,
hb_font_t *font)
{
- const char *p = buf, *pe = buf + buf_len, *eof = pe;
+ const char *p = buf, *pe = buf + buf_len, *eof = pe, *orig_pe = pe;
while (p < pe && ISSPACE (*p))
p++;
@@ -114,6 +114,13 @@
write exec;
}%%
+ if (pe < orig_pe && *pe == '>')
+ {
+ pe++;
+ if (p == pe)
+ p++;
+ }
+
*end_ptr = p;
return p == pe;
diff --git a/src/test-buffer-serialize.cc b/src/test-buffer-serialize.cc
index 42a52a4..aced1c8 100644
--- a/src/test-buffer-serialize.cc
+++ b/src/test-buffer-serialize.cc
@@ -77,7 +77,7 @@
break;
}
- if (*p == ']' || *p == '\n')
+ if (*p == '\n')
break;
if (p == line)
{