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

checker: disallow address of array and map index outside unsafe (#6557)

This commit is contained in:
Swastik Baranwal
2020-10-05 16:38:30 +05:30
committed by GitHub
parent 2b1a5d7a56
commit 5f07b255bd
12 changed files with 54 additions and 25 deletions

View File

@@ -514,9 +514,13 @@ pub fn channel_select(mut channels []&Channel, dir []Direction, mut objrefs []vo
}
subscr[i].sem = sem
subscr[i].prev = &ch.write_subscriber
subscr[i].nxt = C.atomic_exchange_ptr(&ch.write_subscriber, &subscr[i])
unsafe {
subscr[i].nxt = C.atomic_exchange_ptr(&ch.write_subscriber, &subscr[i])
}
if voidptr(subscr[i].nxt) != voidptr(0) {
subscr[i].nxt.prev = &subscr[i]
unsafe {
subscr[i].nxt.prev = &subscr[i]
}
}
C.atomic_store_u16(&ch.write_sub_mtx, u16(0))
} else {
@@ -526,9 +530,11 @@ pub fn channel_select(mut channels []&Channel, dir []Direction, mut objrefs []vo
}
subscr[i].sem = sem
subscr[i].prev = &ch.read_subscriber
subscr[i].nxt = C.atomic_exchange_ptr(&ch.read_subscriber, &subscr[i])
unsafe {
subscr[i].nxt = C.atomic_exchange_ptr(&ch.read_subscriber, &subscr[i])
}
if voidptr(subscr[i].nxt) != voidptr(0) {
subscr[i].nxt.prev = &subscr[i]
unsafe { subscr[i].nxt.prev = &subscr[i] }
}
C.atomic_store_u16(&ch.read_sub_mtx, u16(0))
}