summaryrefslogtreecommitdiffhomepage
path: root/src/dump.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/dump.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/dump.c')
-rw-r--r--src/dump.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/dump.c b/src/dump.c
index 4327cb375..2b7379d8e 100644
--- a/src/dump.c
+++ b/src/dump.c
@@ -51,7 +51,7 @@ get_iseq_block_size(mrb_state *mrb, const mrb_irep *irep)
size_t size = 0;
size += sizeof(uint16_t); /* clen */
- size += sizeof(uint16_t); /* ilen */
+ size += sizeof(uint32_t); /* ilen */
size += irep->ilen * sizeof(mrb_code); /* iseq(n) */
size += irep->clen * sizeof(struct mrb_irep_catch_handler);
@@ -66,7 +66,7 @@ write_iseq_block(mrb_state *mrb, const mrb_irep *irep, uint8_t *buf, uint8_t fla
irep->clen * sizeof(struct mrb_irep_catch_handler);
cur += uint16_to_bin(irep->clen, cur); /* number of catch handlers */
- cur += uint16_to_bin(irep->ilen, cur); /* number of opcode */
+ cur += uint32_to_bin(irep->ilen, cur); /* number of opcode */
memcpy(cur, irep->iseq, seqlen);
cur += seqlen;