lib/strings/dup: rt.malloc → alloc([], n)! slice form
Pilot for task #8 (runtime-N alloc API). `alloc([], n)!` yields a slice with cap=n, len=0; explicit `buf.len = s.len;` lifts the len before the fromutf8_unsafe reinterpret. Same shape as ref/hare/strings/dup.ha:15 modulo ww not yet having `append` (task #36) — open-coded byte loop in lieu of static-append. Verified 132/132 + 995_self_rebuild byte-identity. Pattern is the template for the next α-category sites (concat/join/lpad/rpad/...).
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user