summaryrefslogtreecommitdiffhomepage
path: root/src/dump.c
diff options
context:
space:
mode:
authorYukihiro Matsumoto <[email protected]>2012-06-21 16:22:29 +0900
committerYukihiro Matsumoto <[email protected]>2012-06-21 16:22:29 +0900
commita70c4e0c790b9ddb4dbca143cffa585b3841b9f6 (patch)
tree1cbbe65814a65c8969b1337bdb0fadae32b85e70 /src/dump.c
parentd105ea496f686b6ef3071e127864fab4677befac (diff)
downloadmruby-a70c4e0c790b9ddb4dbca143cffa585b3841b9f6.tar.gz
mruby-a70c4e0c790b9ddb4dbca143cffa585b3841b9f6.zip
reduce calling of strlen(); #301
Diffstat (limited to 'src/dump.c')
-rw-r--r--src/dump.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/dump.c b/src/dump.c
index daf2868f1..e1ebe2027 100644
--- a/src/dump.c
+++ b/src/dump.c
@@ -415,15 +415,17 @@ write_syms_block(mrb_state *mrb, mrb_irep *irep, char *buf, int type)
uint16_t nlen =0;
if (irep->syms[sym_no] != 0) {
- name = mrb_sym2name(mrb, irep->syms[sym_no]);
- nlen = str_dump_len((char*)name, strlen(name), type);
+ int len;
+
+ name = mrb_sym2name(mrb, irep->syms[sym_no], &len);
+ nlen = str_dump_len((char*)name, len, type);
if ( nlen > buf_size - 1) {
buf_size = nlen + 1;
if ((char_buf = mrb_realloc(mrb, char_buf, buf_size)) == 0)
goto error_exit;
}
memset(char_buf, 0, buf_size);
- str_dump((char*)name, char_buf, strlen(name), type);
+ str_dump((char*)name, char_buf, len, type);
buf += uint16_dump(nlen, buf, type); /* length of symbol name */
memcpy(buf, char_buf, nlen); /* symbol name */