diff options
| author | dearblue <[email protected]> | 2020-11-30 22:41:05 +0900 |
|---|---|---|
| committer | dearblue <[email protected]> | 2020-11-30 22:56:41 +0900 |
| commit | a56b601f5695f8d7522742cfc1f692d4d610c245 (patch) | |
| tree | 5f38f4941932b901d5b906ae67d62107c18dfc98 /src | |
| parent | 9f5c0777f17fe8caff89cef75f2056262e708349 (diff) | |
| download | mruby-a56b601f5695f8d7522742cfc1f692d4d610c245.tar.gz mruby-a56b601f5695f8d7522742cfc1f692d4d610c245.zip | |
Fixed irep size measurement by dump; ref #5203
Diffstat (limited to 'src')
| -rw-r--r-- | src/dump.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/dump.c b/src/dump.c index 03aa04c54..c5171beb6 100644 --- a/src/dump.c +++ b/src/dump.c @@ -136,8 +136,9 @@ get_pool_block_size(mrb_state *mrb, const mrb_irep *irep) default: /* packed IREP_TT_STRING */ { - mrb_int len = irep->pool[pool_no].tt >> 1; /* unpack length */ + mrb_int len = irep->pool[pool_no].tt >> 2; /* unpack length */ mrb_assert_int_fit(mrb_int, len, size_t, SIZE_MAX); + size += sizeof(uint16_t); size += (size_t)len+1; } break; @@ -293,7 +294,6 @@ get_irep_record_size_1(mrb_state *mrb, const mrb_irep *irep) size_t size = 0; size += get_irep_header_size(mrb); - size += sizeof(uint16_t); size += get_iseq_block_size(mrb, irep); size += get_catch_table_block_size(mrb, irep); size += get_pool_block_size(mrb, irep); @@ -393,6 +393,7 @@ write_section_irep(mrb_state *mrb, const mrb_irep *irep, uint8_t *bin, size_t *l if (result != MRB_DUMP_OK) { return result; } + mrb_assert(rsize == get_irep_record_size(mrb, irep)); *len_p = cur - bin + rsize; write_section_irep_header(mrb, *len_p, bin); |
