mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 15:48:51 +00:00
Merge pull request #834 from DanielGavin/master
Invalid expression causes segmentation fault in parse_binary_expr in core/odin package
This commit is contained in:
@@ -3064,7 +3064,13 @@ parse_unary_expr :: proc(p: ^Parser, lhs: bool) -> ^ast.Expr {
|
|||||||
return parse_atom_expr(p, parse_operand(p, lhs), lhs);
|
return parse_atom_expr(p, parse_operand(p, lhs), lhs);
|
||||||
}
|
}
|
||||||
parse_binary_expr :: proc(p: ^Parser, lhs: bool, prec_in: int) -> ^ast.Expr {
|
parse_binary_expr :: proc(p: ^Parser, lhs: bool, prec_in: int) -> ^ast.Expr {
|
||||||
|
start_pos := p.curr_tok.pos;
|
||||||
expr := parse_unary_expr(p, lhs);
|
expr := parse_unary_expr(p, lhs);
|
||||||
|
|
||||||
|
if expr == nil {
|
||||||
|
return ast.new(ast.Bad_Expr, start_pos, end_pos(p.prev_tok));
|
||||||
|
}
|
||||||
|
|
||||||
for prec := token_precedence(p, p.curr_tok.kind); prec >= prec_in; prec -= 1 {
|
for prec := token_precedence(p, p.curr_tok.kind); prec >= prec_in; prec -= 1 {
|
||||||
for {
|
for {
|
||||||
op := p.curr_tok;
|
op := p.curr_tok;
|
||||||
|
|||||||
Reference in New Issue
Block a user