diff --git a/lib/strings/strings.ww b/lib/strings/strings.ww index 1c306dba..b004ad30 100644 --- a/lib/strings/strings.ww +++ b/lib/strings/strings.ww @@ -99,12 +99,11 @@ export fn dup(s: str) str = { r.ptr = nil; r.len = 0; if (s.len == 0) { return r; }; - let buf: *u8 = rt.malloc(s.len: u64): *u8; + let buf: []u8 = alloc([], s.len: u64)!; let i: i32 = 0; for (i < s.len) { buf[i] = s[i]; i += 1; }; - r.ptr = buf; - r.len = s.len; - return r; + buf.len = s.len; + return fromutf8_unsafe(buf); }; // dupall — fresh `[]str` whose elements are independent copies of diff --git a/selfhost/cmd/w6c/main.combined.ww b/selfhost/cmd/w6c/main.combined.ww index e3ace8a2..c7f92ea3 100644 --- a/selfhost/cmd/w6c/main.combined.ww +++ b/selfhost/cmd/w6c/main.combined.ww @@ -1938,12 +1938,11 @@ export fn dup(s: str) str = { r.ptr = nil; r.len = 0; if (s.len == 0) { return r; }; - let buf: *u8 = rt.malloc(s.len: u64): *u8; + let buf: []u8 = alloc([], s.len: u64)!; let i: i32 = 0; for (i < s.len) { buf[i] = s[i]; i += 1; }; - r.ptr = buf; - r.len = s.len; - return r; + buf.len = s.len; + return fromutf8_unsafe(buf); }; // dupall — fresh `[]str` whose elements are independent copies of diff --git a/selfhost/cmd/wwdump/main.combined.ww b/selfhost/cmd/wwdump/main.combined.ww index d1334983..172596af 100644 --- a/selfhost/cmd/wwdump/main.combined.ww +++ b/selfhost/cmd/wwdump/main.combined.ww @@ -1938,12 +1938,11 @@ export fn dup(s: str) str = { r.ptr = nil; r.len = 0; if (s.len == 0) { return r; }; - let buf: *u8 = rt.malloc(s.len: u64): *u8; + let buf: []u8 = alloc([], s.len: u64)!; let i: i32 = 0; for (i < s.len) { buf[i] = s[i]; i += 1; }; - r.ptr = buf; - r.len = s.len; - return r; + buf.len = s.len; + return fromutf8_unsafe(buf); }; // dupall — fresh `[]str` whose elements are independent copies of diff --git a/selfhost/test/smoke.combined.ww b/selfhost/test/smoke.combined.ww index 3339fda9..e611545d 100644 --- a/selfhost/test/smoke.combined.ww +++ b/selfhost/test/smoke.combined.ww @@ -1828,12 +1828,11 @@ export fn dup(s: str) str = { r.ptr = nil; r.len = 0; if (s.len == 0) { return r; }; - let buf: *u8 = rt.malloc(s.len: u64): *u8; + let buf: []u8 = alloc([], s.len: u64)!; let i: i32 = 0; for (i < s.len) { buf[i] = s[i]; i += 1; }; - r.ptr = buf; - r.len = s.len; - return r; + buf.len = s.len; + return fromutf8_unsafe(buf); }; // dupall — fresh `[]str` whose elements are independent copies of