summaryrefslogtreecommitdiffhomepage
path: root/src/load.c
diff options
context:
space:
mode:
authordearblue <[email protected]>2021-12-13 22:58:57 +0900
committerdearblue <[email protected]>2021-12-13 22:58:57 +0900
commitfa33a5bb0cf08a5ba7405ab1553655bcfabee8cf (patch)
treea5618055d4f6040399513d499bec366b784960b6 /src/load.c
parent8a74b2a25d5a0b66326d9642567fef894ea90d10 (diff)
downloadmruby-fa33a5bb0cf08a5ba7405ab1553655bcfabee8cf.tar.gz
mruby-fa33a5bb0cf08a5ba7405ab1553655bcfabee8cf.zip
Avoid losing the upper digits for mruby binary
- `rlen` keeps 16 bits. - `ilen` keeps 32 bits. Note that this change will break mruby binary format compatibility.
Diffstat (limited to 'src/load.c')
-rw-r--r--src/load.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/load.c b/src/load.c
index 2d1ec507e..9b8ffa384 100644
--- a/src/load.c
+++ b/src/load.c
@@ -85,15 +85,15 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag
src += sizeof(uint16_t);
/* number of child irep */
- irep->rlen = (uint8_t)bin_to_uint16(src);
+ irep->rlen = bin_to_uint16(src);
src += sizeof(uint16_t);
/* Binary Data Section */
/* ISEQ BLOCK (and CATCH HANDLER TABLE BLOCK) */
irep->clen = bin_to_uint16(src); /* number of catch handler */
src += sizeof(uint16_t);
- irep->ilen = bin_to_uint16(src);
- src += sizeof(uint16_t);
+ irep->ilen = bin_to_uint32(src);
+ src += sizeof(uint32_t);
if (irep->ilen > 0) {
size_t data_len = sizeof(mrb_code) * irep->ilen +