summaryrefslogtreecommitdiffhomepage
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
parentd105ea496f686b6ef3071e127864fab4677befac (diff)
downloadmruby-a70c4e0c790b9ddb4dbca143cffa585b3841b9f6.tar.gz
mruby-a70c4e0c790b9ddb4dbca143cffa585b3841b9f6.zip
reduce calling of strlen(); #301
-rw-r--r--src/codegen.c7
-rw-r--r--src/dump.c8
-rw-r--r--src/hash.c4
-rw-r--r--src/re.c19
-rw-r--r--src/sprintf.c8
-rw-r--r--src/string.c2
6 files changed, 25 insertions, 23 deletions
diff --git a/src/codegen.c b/src/codegen.c
index 3374b2e7f..27fd20ee4 100644
--- a/src/codegen.c
+++ b/src/codegen.c
@@ -542,16 +542,17 @@ nosplat(node *t)
static mrb_sym
attrsym(codegen_scope *s, mrb_sym a)
{
- const char *name = mrb_sym2name(s->mrb, a);
+ const char *name;
+ int len;
char *name2;
- size_t len = strlen(name);
+ name = mrb_sym2name(s->mrb, a, &len);
name2 = codegen_palloc(s, len+1);
strcpy(name2, name);
name2[len] = '=';
name2[len+1] = '\0';
- return mrb_intern(s->mrb, name2);
+ return mrb_intern2(s->mrb, name2, len+1);
}
static int
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 */
diff --git a/src/hash.c b/src/hash.c
index 08f906800..7b9ae6a8a 100644
--- a/src/hash.c
+++ b/src/hash.c
@@ -904,14 +904,14 @@ inspect_hash(mrb_state *mrb, mrb_value hash, int recur)
str2 = mrb_inspect(mrb, kh_key(h,k));
mrb_str_append(mrb, str, str2);
- mrb_str_buf_cat(mrb, str, "=>", strlen("=>"));
+ mrb_str_buf_cat(mrb, str, "=>", sizeof("=>"));
str2 = mrb_inspect(mrb, kh_value(h,k));
mrb_str_append(mrb, str, str2);
mrb_gc_arena_restore(mrb, ai);
}
}
- mrb_str_buf_cat(mrb, str, "}", strlen("}"));//mrb_str_buf_cat2(str, "}");
+ mrb_str_buf_cat(mrb, str, "}", sizeof("}"));
return str;
}
diff --git a/src/re.c b/src/re.c
index b821d2e71..12061eacf 100644
--- a/src/re.c
+++ b/src/re.c
@@ -357,14 +357,14 @@ mrb_reg_desc(mrb_state *mrb, const char *s, long len, mrb_value re)
mrb_value str = mrb_str_new_cstr(mrb, "/");//mrb_str_buf_new2("/");
mrb_reg_expr_str(mrb, str, s, len);
- mrb_str_buf_cat(mrb, str, "/", strlen("/"));
+ mrb_str_buf_cat(mrb, str, "/", sizeof("/"));
if (re.tt) {
char opts[4];
mrb_reg_check(mrb, re);
if (*option_to_str(opts, RREGEXP(re)->ptr->options))
mrb_str_buf_cat(mrb, str, opts, strlen(opts));//mrb_str_buf_cat2(str, opts);
if (RBASIC(re)->flags & REG_ENCODING_NONE)
- mrb_str_buf_cat(mrb, str, "n", strlen("n"));//mrb_str_buf_cat2(str, "n");
+ mrb_str_buf_cat(mrb, str, "n", sizeof("n"));
}
return str;
@@ -1796,9 +1796,9 @@ again:
mrb_str_buf_cat(mrb, str, optbuf, strlen(optbuf));
}
- mrb_str_buf_cat(mrb, str, ":", strlen(":"));
+ mrb_str_buf_cat(mrb, str, ":", sizeof(":"));
mrb_reg_expr_str(mrb, str, (char*)ptr, len);
- mrb_str_buf_cat(mrb, str, ")", strlen(")"));
+ mrb_str_buf_cat(mrb, str, ")", sizeof(")"));
return str;
}
@@ -1919,29 +1919,28 @@ mrb_match_inspect(mrb_state *mrb, mrb_value match)
match_inspect_name_iter, names);
str = mrb_str_new_cstr(mrb, "#<");//mrb_str_buf_new2("#<");
- mrb_str_buf_cat(mrb, str, cname, strlen(cname));//mrb_str_buf_cat2(str, cname);
+ mrb_str_buf_cat(mrb, str, cname, strlen(cname));
for (i = 0; i < num_regs; i++) {
char buf[sizeof(num_regs)*3+1];
mrb_value v;
- mrb_str_buf_cat(mrb, str, " ", strlen(" "));//mrb_str_buf_cat2(str, " ");
+ mrb_str_buf_cat(mrb, str, " ", sizeof(" "));
if (0 < i) {
if (names[i].name)
mrb_str_buf_cat(mrb, str, (const char*)names[i].name, names[i].len);
else {
- //mrb_str_catf(mrb, str, "%d", i);
sprintf(buf, "%d", i);
mrb_str_buf_cat(mrb, str, (const char*)buf, strlen(buf));
}
- mrb_str_buf_cat(mrb, str, ":", strlen(":"));//mrb_str_buf_cat2(str, ":");
+ mrb_str_buf_cat(mrb, str, ":", sizeof(":"));
}
v = mrb_reg_nth_match(mrb, i, match);
if (mrb_nil_p(v))
- mrb_str_buf_cat(mrb, str, "nil", strlen("nil"));//mrb_str_buf_cat2(str, "nil");
+ mrb_str_buf_cat(mrb, str, "nil", sizeof("nil"));
else
mrb_str_buf_append(mrb, str, mrb_str_inspect(mrb, v));
}
- mrb_str_buf_cat(mrb, str, ">", strlen(">"));//mrb_str_buf_cat2(str, ">");
+ mrb_str_buf_cat(mrb, str, ">", sizeof(">"));
return str;
}
diff --git a/src/sprintf.c b/src/sprintf.c
index b4d460c83..c23969792 100644
--- a/src/sprintf.c
+++ b/src/sprintf.c
@@ -1069,13 +1069,13 @@ fmt_setup(char *buf, size_t size, int c, int flags, int width, int prec)
if (flags & FSPACE) *buf++ = ' ';
if (flags & FWIDTH) {
- snprintf(buf, end - buf, "%d", width);
- buf += strlen(buf);
+ snprintf(buf, end - buf, "%d", width);
+ buf += strlen(buf);
}
if (flags & FPREC) {
- snprintf(buf, end - buf, ".%d", prec);
- buf += strlen(buf);
+ snprintf(buf, end - buf, ".%d", prec);
+ buf += strlen(buf);
}
*buf++ = c;
diff --git a/src/string.c b/src/string.c
index 585edf8a3..894342463 100644
--- a/src/string.c
+++ b/src/string.c
@@ -2987,7 +2987,7 @@ mrb_str_inspect(mrb_state *mrb, mrb_value str)
continue;
}
}
- mrb_str_buf_cat(mrb, result, "\"", strlen("\""));
+ mrb_str_buf_cat(mrb, result, "\"", sizeof("\""));
return result;
}