diff options
| author | Yukihiro Matsumoto <[email protected]> | 2012-07-06 19:47:48 +0900 |
|---|---|---|
| committer | Yukihiro Matsumoto <[email protected]> | 2012-07-06 19:47:48 +0900 |
| commit | dfaa5c9506455b594392a61bf6aae101ecbc1887 (patch) | |
| tree | 9a50c371b25e7b5646aa6a41a3dcf91a6a11636d /src/dump.c | |
| parent | 4406a08d58f55f1d3d32c98a78bd7dc61a242c8d (diff) | |
| parent | c92ae384151a0bf9790bb1611668fa817d3c237a (diff) | |
| download | mruby-dfaa5c9506455b594392a61bf6aae101ecbc1887.tar.gz mruby-dfaa5c9506455b594392a61bf6aae101ecbc1887.zip | |
Merge branch 'master' of github.com:mruby/mruby
Diffstat (limited to 'src/dump.c')
| -rw-r--r-- | src/dump.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/dump.c b/src/dump.c index bbdd58eee..0e40cf3ed 100644 --- a/src/dump.c +++ b/src/dump.c @@ -331,6 +331,7 @@ write_pool_block(mrb_state *mrb, mrb_irep *irep, char *buf, int type) char *buf_top = buf; char *char_buf; uint16_t buf_size =0; + int len; buf_size = MRB_DUMP_DEFAULT_STR_LEN; if ((char_buf = mrb_malloc(mrb, buf_size)) == 0) @@ -384,10 +385,12 @@ write_pool_block(mrb_state *mrb, mrb_irep *irep, char *buf, int type) continue; } - buf += uint16_dump((uint16_t)strlen(char_buf), buf, type); /* data length */ + len = strlen(char_buf); - memcpy(buf, char_buf, strlen(char_buf)); - buf += strlen(char_buf); + buf += uint16_dump((uint16_t)len, buf, type); /* data length */ + + memcpy(buf, char_buf, len); + buf += len; } error_exit: @@ -600,8 +603,10 @@ dump_irep_record(mrb_state *mrb, int irep_no, FILE* fp, uint32_t *rlen) memset( buf, 0, irep_record_size); - if ((rc = write_irep_record(mrb, irep_no, buf, rlen, DUMP_TYPE_HEX)) != MRB_DUMP_OK) + if ((rc = write_irep_record(mrb, irep_no, buf, rlen, DUMP_TYPE_HEX)) != MRB_DUMP_OK) { + rc = MRB_DUMP_GENERAL_FAILURE; goto error_exit; + } if (fwrite(buf, irep_record_size, 1, fp) != 1) |
