mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
ci: fix sanitizers and add -fsanitize=undefined (#7306)
This commit is contained in:
@@ -338,7 +338,9 @@ pub fn (a &array) clone() array {
|
||||
unsafe {arr.set_unsafe(i, &ar_clone)}
|
||||
}
|
||||
} else {
|
||||
unsafe {C.memcpy(byteptr(arr.data), a.data, a.cap * a.element_size)}
|
||||
if !isnil(a.data) {
|
||||
unsafe {C.memcpy(byteptr(arr.data), a.data, a.cap * a.element_size)}
|
||||
}
|
||||
}
|
||||
return arr
|
||||
}
|
||||
@@ -396,7 +398,7 @@ fn (mut a array) push(val voidptr) {
|
||||
// `val` is array.data
|
||||
// TODO make private, right now it's used by strings.Builder
|
||||
pub fn (mut a3 array) push_many(val voidptr, size int) {
|
||||
if a3.data == val {
|
||||
if a3.data == val && !isnil(a3.data) {
|
||||
// handle `arr << arr`
|
||||
copy := a3.clone()
|
||||
a3.ensure_cap(a3.len + size)
|
||||
@@ -406,7 +408,9 @@ pub fn (mut a3 array) push_many(val voidptr, size int) {
|
||||
}
|
||||
} else {
|
||||
a3.ensure_cap(a3.len + size)
|
||||
unsafe {C.memcpy(a3.get_unsafe(a3.len), val, a3.element_size * size)}
|
||||
if !isnil(a3.data) && !isnil(val) {
|
||||
unsafe {C.memcpy(a3.get_unsafe(a3.len), val, a3.element_size * size)}
|
||||
}
|
||||
}
|
||||
a3.len += size
|
||||
}
|
||||
|
||||
@@ -356,7 +356,7 @@ fn converter(mut pn PrepNumber) u64 {
|
||||
mut r2 := u32(0) // 96-bit precision integer
|
||||
mut r1 := u32(0)
|
||||
mut r0 := u32(0)
|
||||
mask28 := u32(0xF<<28)
|
||||
mask28 := u32(u64(0xF)<<28)
|
||||
mut result := u64(0)
|
||||
// working on 3 u32 to have 96 bit precision
|
||||
s0 = u32(pn.mantissa & u64(0x00000000FFFFFFFF))
|
||||
|
||||
Reference in New Issue
Block a user