summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--internal.h5
-rw-r--r--symbol.c8
2 files changed, 13 insertions, 0 deletions
diff --git a/internal.h b/internal.h
index d135035607..eb78a88ae1 100644
--- a/internal.h
+++ b/internal.h
@@ -1129,6 +1129,11 @@ size_t rb_str_memsize(VALUE);
VALUE rb_sym_proc_call(VALUE args, VALUE sym, int argc, const VALUE *argv, VALUE passed_proc);
VALUE rb_sym_to_proc(VALUE sym);
+/* symbol.c */
+#ifdef RUBY_ENCODING_H
+VALUE rb_cstr_intern(const char *ptr, long len, rb_encoding *enc);
+#endif
+
/* struct.c */
VALUE rb_struct_init_copy(VALUE copy, VALUE s);
diff --git a/symbol.c b/symbol.c
index f46acf22b7..4fe3adf724 100644
--- a/symbol.c
+++ b/symbol.c
@@ -1013,6 +1013,14 @@ rb_check_symbol_cstr(const char *ptr, long len, rb_encoding *enc)
return Qnil;
}
+VALUE
+rb_cstr_intern(const char *ptr, long len, rb_encoding *enc)
+{
+ struct RString fake_str;
+ const VALUE name = rb_setup_fake_str(&fake_str, ptr, len, enc);
+ return rb_str_intern(name);
+}
+
static ID
attrsetname_to_attr_id(VALUE name)
{