diff --git a/src/hb-buffer-private.hh b/src/hb-buffer-private.hh index d3ed4491e..49773f1c9 100644 --- a/src/hb-buffer-private.hh +++ b/src/hb-buffer-private.hh @@ -181,7 +181,7 @@ struct hb_buffer_t { HB_INTERNAL bool enlarge (unsigned int size); inline bool ensure (unsigned int size) - { return likely (size < allocated) ? true : enlarge (size); } + { return likely (!size || size < allocated) ? true : enlarge (size); } HB_INTERNAL bool make_room_for (unsigned int num_in, unsigned int num_out); HB_INTERNAL bool shift_forward (unsigned int count); diff --git a/src/hb-buffer.cc b/src/hb-buffer.cc index bbf8ea0f9..d6c6fcb8e 100644 --- a/src/hb-buffer.cc +++ b/src/hb-buffer.cc @@ -1150,7 +1150,10 @@ hb_buffer_set_length (hb_buffer_t *buffer, buffer->len = length; if (!length) + { + buffer->content_type = HB_BUFFER_CONTENT_TYPE_INVALID; buffer->clear_context (0); + } buffer->clear_context (1); return true;