Skip to content

Commit dddcf29

Browse files
authored
checker: disallow deference of nil (fix #25740) (#25746)
1 parent 8094150 commit dddcf29

File tree

3 files changed

+10
-0
lines changed

3 files changed

+10
-0
lines changed

vlib/v/checker/checker.v

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5033,6 +5033,9 @@ fn (mut c Checker) prefix_expr(mut node ast.PrefixExpr) ast.Type {
50335033
if right_type.is_voidptr() {
50345034
c.error('cannot dereference to void', node.pos)
50355035
}
5036+
if right_type == ast.nil_type {
5037+
c.error('cannot deference a `nil` pointer', node.right.pos())
5038+
}
50365039
if mut expr is ast.Ident {
50375040
if var := expr.scope.find_var('${expr.name}') {
50385041
if var.expr is ast.UnsafeExpr {
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
vlib/v/checker/tests/unsafe_deference_nil_err.vv:1:1: warning: unused variable: `a`
2+
1 | a := unsafe { *nil }
3+
| ^
4+
vlib/v/checker/tests/unsafe_deference_nil_err.vv:1:16: error: cannot deference a `nil` pointer
5+
1 | a := unsafe { *nil }
6+
| ~~~
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
a := unsafe { *nil }

0 commit comments

Comments
 (0)