Don't add reference in get_unicode_funcs() functions
Users don't expect a new reference returned from a get() function.
Indeed, all users of that API I foud where NOT destroying the reference.
Just change the implementations to NOT return a reference.
This applies to the following APIs:
hb_unicode_funcs_get_default()
hb_glib_get_unicode_funcs()
hb_icu_get_unicode_funcs()
Fixes https://github.com/harfbuzz/harfbuzz/issues/1134
diff --git a/src/hb-buffer.cc b/src/hb-buffer.cc
index e79b45a..eb7b01c 100644
--- a/src/hb-buffer.cc
+++ b/src/hb-buffer.cc
@@ -216,7 +216,7 @@
return;
hb_unicode_funcs_destroy (unicode);
- unicode = hb_unicode_funcs_get_default ();
+ unicode = hb_unicode_funcs_reference (hb_unicode_funcs_get_default ());
flags = HB_BUFFER_FLAG_DEFAULT;
replacement = HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT;
@@ -908,7 +908,6 @@
if (!unicode_funcs)
unicode_funcs = hb_unicode_funcs_get_default ();
-
hb_unicode_funcs_reference (unicode_funcs);
hb_unicode_funcs_destroy (buffer->unicode);
buffer->unicode = unicode_funcs;
diff --git a/src/hb-glib.cc b/src/hb-glib.cc
index 342891d..809b22f 100644
--- a/src/hb-glib.cc
+++ b/src/hb-glib.cc
@@ -401,7 +401,7 @@
hb_unicode_funcs_t *
hb_glib_get_unicode_funcs (void)
{
- return hb_unicode_funcs_reference (static_glib_funcs.get_unconst ());
+ return static_glib_funcs.get_unconst ();
}
diff --git a/src/hb-icu.cc b/src/hb-icu.cc
index 380a99c..63b37f0 100644
--- a/src/hb-icu.cc
+++ b/src/hb-icu.cc
@@ -390,5 +390,5 @@
hb_unicode_funcs_t *
hb_icu_get_unicode_funcs (void)
{
- return hb_unicode_funcs_reference (static_icu_funcs.get_unconst ());
+ return static_icu_funcs.get_unconst ();
}
diff --git a/src/hb-ucdn.cc b/src/hb-ucdn.cc
index 7b26e51..56d13e7 100644
--- a/src/hb-ucdn.cc
+++ b/src/hb-ucdn.cc
@@ -275,5 +275,5 @@
hb_unicode_funcs_t *
hb_ucdn_get_unicode_funcs (void)
{
- return hb_unicode_funcs_reference (static_ucdn_funcs.get_unconst ());
+ return static_ucdn_funcs.get_unconst ();
}