summaryrefslogtreecommitdiff
path: root/src/lib9/tempdir_windows.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib9/tempdir_windows.c')
-rw-r--r--src/lib9/tempdir_windows.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/src/lib9/tempdir_windows.c b/src/lib9/tempdir_windows.c
index 8e9322dc8..1a530059a 100644
--- a/src/lib9/tempdir_windows.c
+++ b/src/lib9/tempdir_windows.c
@@ -30,18 +30,16 @@ WinRune*
torune(char *p)
{
int i, n;
- Rune *r1;
+ Rune rr;
WinRune *r;
- r1 = runesmprint("%s", p);
- n = 0;
- while(r1[n] != '\0')
- n++;
- n++;
- r = malloc(n*sizeof r[0]);
- for(i=0; i<n; i++)
- r[i] = r1[i];
- free(r1);
+ n = utflen(p);
+ r = malloc((n+1)*sizeof r[0]);
+ for(i=0; i<n; i++) {
+ p += chartorune(&rr, p);
+ r[i] = rr;
+ }
+ r[n] = '\0';
return r;
}