diff --git a/ChangeLog b/ChangeLog index dbc09f1eff..7bbcc77478 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sun Oct 20 04:18:48 2013 Aman Gupta + + * variable.c (rb_class2name): call rb_tmp_class_path() directly to + avoid extra rb_str_dup() from rb_class_name(). + Sat Oct 19 19:59:02 2013 Nobuyoshi Nakada * win32/file.c (code_page): use simple array instead of st_table. diff --git a/variable.c b/variable.c index fa4a769b33..1614afb742 100644 --- a/variable.c +++ b/variable.c @@ -385,8 +385,10 @@ rb_class_name(VALUE klass) const char * rb_class2name(VALUE klass) { - VALUE name = rb_class_name(klass); - return RSTRING_PTR(name); + int permanent; + VALUE path = rb_tmp_class_path(klass, &permanent, rb_ivar_set); + if (NIL_P(path)) return NULL; + return RSTRING_PTR(path); } const char *