m[buffer] In hb_buffer_append() don't change until allocation success
diff --git a/src/hb-buffer.cc b/src/hb-buffer.cc
index 11826b1..3c54f72 100644
--- a/src/hb-buffer.cc
+++ b/src/hb-buffer.cc
@@ -1772,11 +1772,6 @@
if (start == end)
return;
- if (!buffer->len)
- buffer->content_type = source->content_type;
- if (!buffer->have_positions && source->have_positions)
- buffer->clear_positions ();
-
if (buffer->len + (end - start) < buffer->len) /* Overflows. */
{
buffer->successful = false;
@@ -1788,6 +1783,11 @@
if (unlikely (!buffer->successful))
return;
+ if (!orig_len)
+ buffer->content_type = source->content_type;
+ if (!buffer->have_positions && source->have_positions)
+ buffer->clear_positions ();
+
memcpy (buffer->info + orig_len, source->info + start, (end - start) * sizeof (buffer->info[0]));
if (buffer->have_positions)
memcpy (buffer->pos + orig_len, source->pos + start, (end - start) * sizeof (buffer->pos[0]));