summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--include/mruby/string.h2
-rw-r--r--src/codegen.c2
-rw-r--r--src/load.c2
-rw-r--r--src/state.c22
-rw-r--r--src/string.c22
5 files changed, 25 insertions, 25 deletions
diff --git a/include/mruby/string.h b/include/mruby/string.h
index 77ff7a3d6..594965134 100644
--- a/include/mruby/string.h
+++ b/include/mruby/string.h
@@ -50,7 +50,6 @@ char *mrb_string_value_cstr(mrb_state *mrb, mrb_value *ptr);
char *mrb_string_value_ptr(mrb_state *mrb, mrb_value ptr);
int mrb_str_offset(mrb_state *mrb, mrb_value str, int pos);
mrb_value mrb_str_dup(mrb_state *mrb, mrb_value str);
-mrb_value mrb_str_dup_static(mrb_state *mrb, mrb_value str);
mrb_value mrb_str_intern(mrb_state *mrb, mrb_value self);
mrb_value mrb_str_cat_cstr(mrb_state *, mrb_value, const char *);
mrb_value mrb_str_to_inum(mrb_state *mrb, mrb_value str, int base, int badcheck);
@@ -66,6 +65,7 @@ mrb_value mrb_str_append(mrb_state *mrb, mrb_value str, mrb_value str2);
int mrb_str_cmp(mrb_state *mrb, mrb_value str1, mrb_value str2);
char *mrb_str_to_cstr(mrb_state *mrb, mrb_value str);
+mrb_value mrb_str_pool(mrb_state *mrb, mrb_value str);
/* For backward compatibility */
static inline mrb_value
diff --git a/src/codegen.c b/src/codegen.c
index f3e6e2f0c..7b7fc39c5 100644
--- a/src/codegen.c
+++ b/src/codegen.c
@@ -440,7 +440,7 @@ new_lit(codegen_scope *s, mrb_value val)
switch (mrb_type(val)) {
case MRB_TT_STRING:
- *pv = mrb_str_dup_static(s->mrb, val);
+ *pv = mrb_str_pool(s->mrb, val);
break;
case MRB_TT_FLOAT:
diff --git a/src/load.c b/src/load.c
index 4f7aeb2d5..f8dd5b525 100644
--- a/src/load.c
+++ b/src/load.c
@@ -110,7 +110,7 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, uint32_t *len)
break;
case IREP_TT_STRING:
- irep->pool[i] = mrb_str_dup_static(mrb, s);
+ irep->pool[i] = mrb_str_pool(mrb, s);
break;
default:
diff --git a/src/state.c b/src/state.c
index 52a1541cb..f8a97cb61 100644
--- a/src/state.c
+++ b/src/state.c
@@ -147,6 +147,28 @@ mrb_irep_free(mrb_state *mrb, mrb_irep *irep)
mrb_free(mrb, irep);
}
+mrb_value
+mrb_str_pool(mrb_state *mrb, mrb_value str)
+{
+ struct RString *s = mrb_str_ptr(str);
+ struct RString *ns;
+ mrb_int len;
+
+ ns = (struct RString *)mrb_malloc(mrb, sizeof(struct RString));
+ ns->tt = MRB_TT_STRING;
+ ns->c = mrb->string_class;
+
+ len = s->len;
+ ns->len = len;
+ ns->ptr = (char *)mrb_malloc(mrb, (size_t)len+1);
+ if (s->ptr) {
+ memcpy(ns->ptr, s->ptr, len);
+ }
+ ns->ptr[len] = '\0';
+
+ return mrb_obj_value(ns);
+}
+
void
mrb_free_context(mrb_state *mrb, struct mrb_context *c)
{
diff --git a/src/string.c b/src/string.c
index 6ec98c778..af70e8e45 100644
--- a/src/string.c
+++ b/src/string.c
@@ -734,28 +734,6 @@ mrb_str_dup(mrb_state *mrb, mrb_value str)
return mrb_str_new(mrb, s->ptr, s->len);
}
-mrb_value
-mrb_str_dup_static(mrb_state *mrb, mrb_value str)
-{
- struct RString *s = mrb_str_ptr(str);
- struct RString *ns;
- mrb_int len;
-
- ns = (struct RString *)mrb_malloc(mrb, sizeof(struct RString));
- ns->tt = MRB_TT_STRING;
- ns->c = mrb->string_class;
-
- len = s->len;
- ns->len = len;
- ns->ptr = (char *)mrb_malloc(mrb, (size_t)len+1);
- if (s->ptr) {
- memcpy(ns->ptr, s->ptr, len);
- }
- ns->ptr[len] = '\0';
-
- return mrb_obj_value(ns);
-}
-
static mrb_value
mrb_str_aref(mrb_state *mrb, mrb_value str, mrb_value indx)
{