1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

checker: warn if C.m* or C.s* functions are called outside unsafe blocks (#5869)

This commit is contained in:
Nick Treleaven
2020-07-20 18:06:41 +01:00
committed by GitHub
parent 1a5236e53d
commit a74cbf55c7
23 changed files with 175 additions and 88 deletions

View File

@@ -73,7 +73,9 @@ fn new_array_from_c_array(len, cap, elm_size int, c_array voidptr) array {
cap: cap_
}
// TODO Write all memory functions (like memcpy) in V
C.memcpy(arr.data, c_array, len * elm_size)
unsafe {
C.memcpy(arr.data, c_array, len * elm_size)
}
return arr
}
@@ -125,7 +127,9 @@ pub fn (a array) repeat(count int) array {
for i in 0..count {
if a.len > 0 && a.element_size == sizeof(array) {
ary := array{}
C.memcpy(&ary, a.data, sizeof(array))
unsafe {
C.memcpy(&ary, a.data, sizeof(array))
}
ary_clone := ary.clone()
unsafe {
C.memcpy(arr.get_unsafe(i * a.len), &ary_clone, a.len * a.element_size)
@@ -516,7 +520,9 @@ pub fn copy(dst, src []byte) int {
if dst.len > 0 && src.len > 0 {
mut min := 0
min = if dst.len < src.len { dst.len } else { src.len }
C.memcpy(byteptr(dst.data), src[..min].data, dst.element_size * min)
unsafe {
C.memcpy(byteptr(dst.data), src[..min].data, dst.element_size * min)
}
return min
}
return 0