diff options
| -rw-r--r-- | src/dump.c | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/src/dump.c b/src/dump.c index 8e89b7a32..3256e2043 100644 --- a/src/dump.c +++ b/src/dump.c @@ -384,7 +384,7 @@ write_lineno_record(mrb_state *mrb, mrb_irep *irep, uint8_t* bin) bin += rlen; size += rlen; for (i=0; i<irep->rlen; i++) { - rlen = write_lineno_record_1(mrb, irep, bin); + rlen = write_lineno_record(mrb, irep, bin); bin += rlen; size += rlen; } @@ -405,7 +405,6 @@ write_section_lineno(mrb_state *mrb, mrb_irep *irep, uint8_t *bin) section_size += sizeof(struct rite_section_lineno_header); rlen = write_lineno_record(mrb, irep, cur); - cur += rlen; section_size += rlen; write_section_lineno_header(mrb, section_size, bin); @@ -498,7 +497,7 @@ get_filename_table_size(mrb_state *mrb, mrb_irep *irep, mrb_sym **fp, size_t *lp } static int -write_debug_record(mrb_state *mrb, mrb_irep *irep, uint8_t *bin, mrb_sym const* filenames, size_t filenames_len) +write_debug_record_1(mrb_state *mrb, mrb_irep *irep, uint8_t *bin, mrb_sym const* filenames, size_t filenames_len) { uint8_t *cur; uint32_t f_idx; @@ -552,6 +551,22 @@ write_debug_record(mrb_state *mrb, mrb_irep *irep, uint8_t *bin, mrb_sym const* } static int +write_debug_record(mrb_state *mrb, mrb_irep *irep, uint8_t *bin, mrb_sym const* filenames, size_t filenames_len) +{ + uint32_t size, len; + size_t irep_no; + + size = len = write_debug_record_1(mrb, irep, bin, filenames, filenames_len); + bin += len; + for (irep_no = 0; irep_no < irep->rlen; irep_no++) { + len = write_debug_record(mrb, irep->reps[irep_no], bin, filenames, filenames_len); + bin += len; + size += len; + } + return size; +} + +static int write_filename_table(mrb_state *mrb, mrb_irep *irep, uint8_t **cp, mrb_sym **fp, size_t *lp) { uint8_t *cur = *cp; @@ -614,13 +629,7 @@ write_section_debug(mrb_state *mrb, mrb_irep *irep, uint8_t *cur) // debug records dlen = write_debug_record(mrb, irep, cur, filenames, filenames_len); - cur += dlen; section_size += dlen; - for (i=0; i<irep->rlen; i++) { - dlen = write_debug_record(mrb, irep->reps[i], cur, filenames, filenames_len); - cur += dlen; - section_size += dlen; - } memcpy(header->section_identify, RITE_SECTION_DEBUG_IDENTIFIER, sizeof(header->section_identify)); uint32_to_bin(section_size, header->section_size); |
