summaryrefslogtreecommitdiffhomepage
path: root/src/load.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2013-03-28 17:29:13 -0700
committerYukihiro "Matz" Matsumoto <[email protected]>2013-03-28 17:29:13 -0700
commit5fb12a990d4d30876ce21e6225acbef35f47b48a (patch)
tree99b824999553bec17920911413cea338fd77c75d /src/load.c
parent8326b0ab70e2f9112bca9ad58e08ee130aab5d21 (diff)
parent1e58b9c2bf138763a26be24f1a0d106b11165df9 (diff)
downloadmruby-5fb12a990d4d30876ce21e6225acbef35f47b48a.tar.gz
mruby-5fb12a990d4d30876ce21e6225acbef35f47b48a.zip
Merge pull request #1100 from masuidrive/fixed_debug_args
Fixed wrong section size calculation
Diffstat (limited to 'src/load.c')
-rw-r--r--src/load.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/load.c b/src/load.c
index cb36c9914..6a173788a 100644
--- a/src/load.c
+++ b/src/load.c
@@ -234,9 +234,12 @@ read_rite_lineno_record(mrb_state *mrb, const uint8_t *bin, size_t irepno, uint3
short *lines;
ret = MRB_DUMP_OK;
+ *len = 0;
bin += sizeof(uint32_t); // record size
+ *len += sizeof(uint32_t);
fname_len = bin_to_uint16(bin);
bin += sizeof(uint16_t);
+ *len += sizeof(uint16_t);
fname = (char *)mrb_malloc(mrb, fname_len + 1);
if (fname == NULL) {
ret = MRB_DUMP_GENERAL_FAILURE;
@@ -245,15 +248,18 @@ read_rite_lineno_record(mrb_state *mrb, const uint8_t *bin, size_t irepno, uint3
memcpy(fname, bin, fname_len);
fname[fname_len] = '\0';
bin += fname_len;
+ *len += fname_len;
niseq = bin_to_uint32(bin);
bin += sizeof(uint32_t); // niseq
+ *len += sizeof(uint32_t);
lines = (short *)mrb_malloc(mrb, niseq * sizeof(short));
for (i = 0; i < niseq; i++) {
lines[i] = bin_to_uint16(bin);
- bin += sizeof(short); // niseq
- }
+ bin += sizeof(uint16_t); // niseq
+ *len += sizeof(uint16_t);
+ }
mrb->irep[irepno]->filename = fname;
mrb->irep[irepno]->lines = lines;