mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* ext/objspace/object_tracing.c (newobj_i): skip class_path if class
is frozen. rb_class_path() can modify frozen classes (and causes errors). This patch is temporary. We need no-modification/no-allocation class path function. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43856 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
bd26be2b34
commit
8ca8d7afb3
2 changed files with 10 additions and 1 deletions
|
@ -1,3 +1,12 @@
|
|||
Tue Nov 26 19:17:47 2013 Koichi Sasada <ko1@atdot.net>
|
||||
|
||||
* ext/objspace/object_tracing.c (newobj_i): skip class_path if class
|
||||
is frozen.
|
||||
|
||||
rb_class_path() can modify frozen classes (and causes errors).
|
||||
This patch is temporary. We need no-modification/no-allocation
|
||||
class path function.
|
||||
|
||||
Tue Nov 26 18:12:13 2013 Koichi Sasada <ko1@atdot.net>
|
||||
|
||||
* vm_trace.c: skip "exception check" and "reentrant check (only normal
|
||||
|
|
|
@ -81,7 +81,7 @@ newobj_i(VALUE tpval, void *data)
|
|||
VALUE klass = rb_tracearg_defined_class(tparg);
|
||||
struct allocation_info *info;
|
||||
const char *path_cstr = RTEST(path) ? make_unique_str(arg->str_table, RSTRING_PTR(path), RSTRING_LEN(path)) : 0;
|
||||
VALUE class_path = RTEST(klass) ? rb_class_path(klass) : Qnil;
|
||||
VALUE class_path = (RTEST(klass) && !OBJ_FROZEN(klass)) ? rb_class_path(klass) : Qnil;
|
||||
const char *class_path_cstr = RTEST(class_path) ? make_unique_str(arg->str_table, RSTRING_PTR(class_path), RSTRING_LEN(class_path)) : 0;
|
||||
|
||||
if (st_lookup(arg->object_table, (st_data_t)obj, (st_data_t *)&info)) {
|
||||
|
|
Loading…
Add table
Reference in a new issue