summaryrefslogtreecommitdiffhomepage
path: root/src/dump.c
diff options
context:
space:
mode:
authorYukihiro Matsumoto <[email protected]>2012-07-06 19:47:48 +0900
committerYukihiro Matsumoto <[email protected]>2012-07-06 19:47:48 +0900
commitdfaa5c9506455b594392a61bf6aae101ecbc1887 (patch)
tree9a50c371b25e7b5646aa6a41a3dcf91a6a11636d /src/dump.c
parent4406a08d58f55f1d3d32c98a78bd7dc61a242c8d (diff)
parentc92ae384151a0bf9790bb1611668fa817d3c237a (diff)
downloadmruby-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.c13
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)