strings: cleanup unsafe casts in some of strings.Builder ops (#13819)
parent
5b492e26dd
commit
d6c40865f9
|
@ -103,11 +103,20 @@ pub fn (mut b Builder) go_back(n int) {
|
||||||
b.trim(b.len - n)
|
b.trim(b.len - n)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[inline]
|
||||||
|
fn (b &Builder) spart(start_pos int, n int) string {
|
||||||
|
unsafe {
|
||||||
|
mut x := malloc_noscan(n + 1)
|
||||||
|
vmemcpy(x, &byte(b.data) + start_pos, n)
|
||||||
|
x[n] = 0
|
||||||
|
return tos(x, n)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// cut_last cuts the last `n` bytes from the buffer and returns them
|
// cut_last cuts the last `n` bytes from the buffer and returns them
|
||||||
pub fn (mut b Builder) cut_last(n int) string {
|
pub fn (mut b Builder) cut_last(n int) string {
|
||||||
cut_pos := b.len - n
|
cut_pos := b.len - n
|
||||||
x := unsafe { (*&[]byte(b))[cut_pos..] }
|
res := b.spart(cut_pos, n)
|
||||||
res := x.bytestr()
|
|
||||||
b.trim(cut_pos)
|
b.trim(cut_pos)
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
@ -147,8 +156,7 @@ pub fn (b &Builder) last_n(n int) string {
|
||||||
if n > b.len {
|
if n > b.len {
|
||||||
return ''
|
return ''
|
||||||
}
|
}
|
||||||
x := unsafe { (*&[]byte(b))[b.len - n..] }
|
return b.spart(b.len - n, n)
|
||||||
return x.bytestr()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// after(6) returns 'world'
|
// after(6) returns 'world'
|
||||||
|
@ -157,8 +165,7 @@ pub fn (b &Builder) after(n int) string {
|
||||||
if n >= b.len {
|
if n >= b.len {
|
||||||
return ''
|
return ''
|
||||||
}
|
}
|
||||||
x := unsafe { (*&[]byte(b))[n..] }
|
return b.spart(n, b.len - n)
|
||||||
return x.bytestr()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// str returns a copy of all of the accumulated buffer content.
|
// str returns a copy of all of the accumulated buffer content.
|
||||||
|
|
Loading…
Reference in New Issue