aboutsummaryrefslogtreecommitdiff
path: root/wcsmbs
diff options
context:
space:
mode:
Diffstat (limited to 'wcsmbs')
-rw-r--r--wcsmbs/wcsmbsload.c10
-rw-r--r--wcsmbs/wcsmbsload.h1
2 files changed, 11 insertions, 0 deletions
diff --git a/wcsmbs/wcsmbsload.c b/wcsmbs/wcsmbsload.c
index 5494d0a..10e1a4f 100644
--- a/wcsmbs/wcsmbsload.c
+++ b/wcsmbs/wcsmbsload.c
@@ -265,3 +265,13 @@ _nl_cleanup_ctype (struct __locale_data *locale)
free ((char *) data);
}
}
+
+/* Free the specified conversion functions (but not CONV itself). */
+void
+__wcsmbs_close_conv (struct gconv_fcts *conv)
+{
+ if (conv->towc != &to_wc)
+ __gconv_close_transform (conv->towc, conv->towc_nsteps);
+ if (conv->tomb != &to_mb)
+ __gconv_close_transform (conv->tomb, conv->tomb_nsteps);
+}
diff --git a/wcsmbs/wcsmbsload.h b/wcsmbs/wcsmbsload.h
index 6ccad4b..c2fffbd 100644
--- a/wcsmbs/wcsmbsload.h
+++ b/wcsmbs/wcsmbsload.h
@@ -51,6 +51,7 @@ extern int __wcsmbs_named_conv (struct gconv_fcts *copy, const char *name)
/* Function used for the `private.cleanup' hook. */
extern void _nl_cleanup_ctype (struct __locale_data *) attribute_hidden;
+extern void __wcsmbs_close_conv (struct gconv_fcts *conv) attribute_hidden;
#include <iconv/gconv_int.h>