summaryrefslogtreecommitdiffstats
path: root/utf8.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2017-05-04 21:42:58 -0700
committerKaz Kylheku <kaz@kylheku.com>2017-05-04 21:42:58 -0700
commitdeb94c615bda4430b3d71eb2f961fbc09cfab9da (patch)
tree36bb29c36ae6ebbabbd5cd60456f0d6b7062f785 /utf8.c
parent7f841abd8218c68f8d69fe798b8d5e9d322b4de8 (diff)
downloadtxr-deb94c615bda4430b3d71eb2f961fbc09cfab9da.tar.gz
txr-deb94c615bda4430b3d71eb2f961fbc09cfab9da.tar.bz2
txr-deb94c615bda4430b3d71eb2f961fbc09cfab9da.zip
Eliminate double strlen in utf8 string conversion.
* utf8.c (utf8_dup_from): Eliminate double call to utf8_from wrapper, which calls strlen. Call the lower level utf8_from_buf directly.
Diffstat (limited to 'utf8.c')
-rw-r--r--utf8.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/utf8.c b/utf8.c
index 206a7e70..37d4bf73 100644
--- a/utf8.c
+++ b/utf8.c
@@ -201,9 +201,10 @@ size_t utf8_to(char *dst, const wchar_t *wsrc)
wchar_t *utf8_dup_from(const char *str)
{
- size_t nchar = utf8_from(0, str);
+ size_t len = strlen(str);
+ size_t nchar = utf8_from_buf(0, coerce(unsigned char *, str), len);
wchar_t *wstr = chk_wmalloc(nchar);
- utf8_from(wstr, str);
+ utf8_from_buf(wstr, coerce(unsigned char *, str), len);
return wstr;
}