mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Fix boundary check for OP_LOADI16; ref fa8668c
It was making a negative integer if the highest-order bit of a 16-bit integer was 1. no patched: ```ruby p 0x7fff # => 32767 p 0x8000 # => -32768 p 0xffff # => -1 p 0x10000 # => 65536 ```
This commit is contained in:
@@ -2448,7 +2448,7 @@ codegen(codegen_scope *s, node *tree, int val)
|
||||
}
|
||||
else if (i < 8) genop_1(s, OP_LOADI_0 + (uint8_t)i, cursp());
|
||||
else if (i <= 0xff) genop_2(s, OP_LOADI, cursp(), (uint16_t)i);
|
||||
else if (i <= 0xffff) genop_2S(s, OP_LOADI16, cursp(), (uint16_t)i);
|
||||
else if (i <= 0x7fff) genop_2S(s, OP_LOADI16, cursp(), (uint16_t)i);
|
||||
else {
|
||||
int off;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user