diff --git a/src/fdlib.c b/src/fdlib.c index 10c3af68caab7d9f9cc291f74a1c53a1ad2b8486..6e34aceb771462740433f6e5f886568c384ee95c 100644 --- a/src/fdlib.c +++ b/src/fdlib.c @@ -906,7 +906,7 @@ static int IsUncRoot(const p_wchar1 *path) return 0 ; } -PMOD_EXPORT p_wchar1 *pike_dwim_utf8_to_utf16(const p_wchar0 *str) +p_wchar1 *low_dwim_utf8_to_utf16(const p_wchar0 *str, size_t len) { /* NB: Maximum expansion factor is 2. * @@ -919,7 +919,6 @@ PMOD_EXPORT p_wchar1 *pike_dwim_utf8_to_utf16(const p_wchar0 *str) * NB: Some extra padding at the end for NUL and adding * of terminating slashes, etc. */ - size_t len = strlen(str); p_wchar1 *res = malloc((len + 4) * sizeof(p_wchar1)); size_t i = 0, j = 0; @@ -979,6 +978,11 @@ PMOD_EXPORT p_wchar1 *pike_dwim_utf8_to_utf16(const p_wchar0 *str) return res; } +PMOD_EXPORT p_wchar1 *pike_dwim_utf8_to_utf16(const p_wchar0 *str) +{ + return low_dwim_utf8_to_utf16(str, strlen(str)); +} + PMOD_EXPORT p_wchar0 *pike_utf16_to_utf8(const p_wchar1 *str) { /* NB: Maximum expansion factor is 1.5. diff --git a/src/fdlib.h b/src/fdlib.h index 2d04cde6cd2e60cbbfdf98cfff9f86045e5dd888..39a1a2901706b522dc7c4d51e42fd3d6cb6d4d26 100644 --- a/src/fdlib.h +++ b/src/fdlib.h @@ -169,6 +169,7 @@ PMOD_EXPORT char *debug_fd_info(int fd); PMOD_EXPORT int debug_fd_query_properties(int fd, int guess); void fd_init(void); void fd_exit(void); +p_wchar1 *low_dwim_utf8_to_utf16(const p_wchar0 *str, size_t len); PMOD_EXPORT p_wchar1 *pike_dwim_utf8_to_utf16(const p_wchar0 *str); PMOD_EXPORT p_wchar0 *pike_utf16_to_utf8(const p_wchar1 *str); PMOD_EXPORT int debug_fd_stat(const char *file, PIKE_STAT_T *buf);