diff --git a/dtc-parser.y b/dtc-parser.y index 00d4dbb..000873f 100644 --- a/dtc-parser.y +++ b/dtc-parser.y @@ -419,7 +419,15 @@ integer_mul: $$ = 0; } } - | integer_mul '%' integer_unary { $$ = $1 % $3; } + | integer_mul '%' integer_unary + { + if ($3 != 0) { + $$ = $1 % $3; + } else { + ERROR(&@$, "Division by zero"); + $$ = 0; + } + } | integer_unary ; diff --git a/tests/division-by-zero.dts b/tests/division-by-zero.dts index d26fc27..2984b29 100644 --- a/tests/division-by-zero.dts +++ b/tests/division-by-zero.dts @@ -1,5 +1,6 @@ /dts-v1/; / { - prop = < (1/0) >; + prop-div = < (1/0) >; + prop-mod = < (1%0) >; };