val_rtrn->uval = leftRtrn.uval * rightRtrn.uval;
break;
case OpDivide:
+ if (rightRtrn.uval == 0) {
+ log_err(ctx, "Cannot divide by zero: %d / %d\n",
+ leftRtrn.uval, rightRtrn.uval);
+ return false;
+ }
val_rtrn->uval = leftRtrn.uval / rightRtrn.uval;
break;
}
val_rtrn->ival = leftRtrn.ival * rightRtrn.ival;
break;
case OpDivide:
+ if (rightRtrn.ival == 0) {
+ log_err(ctx, "Cannot divide by zero: %d / %d\n",
+ leftRtrn.ival, rightRtrn.ival);
+ return false;
+ }
val_rtrn->ival = leftRtrn.ival / rightRtrn.ival;
break;
}
--- /dev/null
+xkb_keymap {
+ xkb_keycodes {
+ <ESC> = 1 / 0;
+ };
+
+ xkb_types {
+ virtual_modifiers NumLock;
+ };
+
+ xkb_compatibility {
+ virtual_modifiers NumLock;
+ };
+
+ xkb_symbols {
+ key <HYPR> { [ NoSymbol, Hyper_L ] };
+ };
+};
assert(test_file(ctx, "keymaps/default.xkb"));
assert(test_file(ctx, "keymaps/comprehensive-plus-geom.xkb"));
+ assert(!test_file(ctx, "keymaps/divide-by-zero.xkb"));
assert(!test_file(ctx, "bad.xkb"));
xkb_context_unref(ctx);