From 18034276608ec2c61198e7e38065997d47cf3725 Mon Sep 17 00:00:00 2001 From: nobu Date: Sun, 8 Nov 2015 07:46:39 +0000 Subject: symbol.c: rb_cstr_intern * symbol.c (rb_cstr_intern): new function to make Symbol object like as rb_str_intern() but from pointer to the name, its length and its encoding. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52495 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- internal.h | 5 +++++ symbol.c | 8 ++++++++ 2 files changed, 13 insertions(+) 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) { -- cgit v1.2.3