summaryrefslogtreecommitdiffhomepage
path: root/src/state.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2013-11-20 08:37:16 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2013-11-20 08:37:16 +0900
commitfb386011df80b4bdada33954df27b9ac4719ad97 (patch)
treef612a4b1784e67d19d37e4f86f19e61f0ab12b4e /src/state.c
parent217595c325a72f250a36a7c5c57b59941aa48118 (diff)
downloadmruby-fb386011df80b4bdada33954df27b9ac4719ad97.tar.gz
mruby-fb386011df80b4bdada33954df27b9ac4719ad97.zip
rename API mrb_str_dup_static() -> mrb_str_pool()
Diffstat (limited to 'src/state.c')
-rw-r--r--src/state.c22
1 files changed, 22 insertions, 0 deletions
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)
{