Add hb_buffer_clear()
Which is like _reset(), but does NOT clear unicode-funcs.
diff --git a/src/hb-buffer-private.hh b/src/hb-buffer-private.hh
index c1acffd..4e92fb5 100644
--- a/src/hb-buffer-private.hh
+++ b/src/hb-buffer-private.hh
@@ -133,6 +133,7 @@
/* Methods */
HB_INTERNAL void reset (void);
+ HB_INTERNAL void clear (void);
inline unsigned int backtrack_len (void) const
{ return have_output? out_len : idx; }
diff --git a/src/hb-buffer.cc b/src/hb-buffer.cc
index 06b5c05..6aff7b9 100644
--- a/src/hb-buffer.cc
+++ b/src/hb-buffer.cc
@@ -142,6 +142,15 @@
hb_unicode_funcs_destroy (unicode);
unicode = hb_unicode_funcs_get_default ();
+ clear ();
+}
+
+void
+hb_buffer_t::clear (void)
+{
+ if (unlikely (hb_object_is_inert (this)))
+ return;
+
hb_segment_properties_t default_props = _HB_BUFFER_PROPS_DEFAULT;
props = default_props;
@@ -722,6 +731,12 @@
buffer->reset ();
}
+void
+hb_buffer_clear (hb_buffer_t *buffer)
+{
+ buffer->clear ();
+}
+
hb_bool_t
hb_buffer_pre_allocate (hb_buffer_t *buffer, unsigned int size)
{
diff --git a/src/hb-buffer.h b/src/hb-buffer.h
index dc63d1b..fbd809c 100644
--- a/src/hb-buffer.h
+++ b/src/hb-buffer.h
@@ -135,6 +135,10 @@
void
hb_buffer_reset (hb_buffer_t *buffer);
+/* Like reset, but does NOT clear unicode_funcs. */
+void
+hb_buffer_clear (hb_buffer_t *buffer);
+
/* Returns false if allocation failed */
hb_bool_t
hb_buffer_pre_allocate (hb_buffer_t *buffer,