* array.c (rb_ary_sort_bang): reset to real class.

* file.c (rb_find_file_ext, rb_find_file): ditto.

* io.c (io_reopen): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18377 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2008-08-05 20:08:33 +00:00
parent 0031e09170
commit f1ff09fbf6
4 changed files with 12 additions and 4 deletions

View File

@ -1,3 +1,11 @@
Wed Aug 6 05:08:30 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
* array.c (rb_ary_sort_bang): reset to real class.
* file.c (rb_find_file_ext, rb_find_file): ditto.
* io.c (io_reopen): ditto.
Wed Aug 6 03:56:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org> Wed Aug 6 03:56:39 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
* common.mk (transcodes), tool/build-transcode: generates transcode * common.mk (transcodes), tool/build-transcode: generates transcode

View File

@ -1562,7 +1562,7 @@ rb_ary_sort_bang(VALUE ary)
RARRAY(tmp)->ptr = 0; RARRAY(tmp)->ptr = 0;
RARRAY(tmp)->len = 0; RARRAY(tmp)->len = 0;
RARRAY(tmp)->aux.capa = 0; RARRAY(tmp)->aux.capa = 0;
RBASIC(tmp)->klass = RBASIC(ary)->klass; RBASIC(tmp)->klass = rb_cArray;
} }
return ary; return ary;
} }

4
file.c
View File

@ -4506,7 +4506,7 @@ rb_find_file_ext(VALUE *filep, const char *const *ext)
if (RSTRING_LEN(str) == 0) continue; if (RSTRING_LEN(str) == 0) continue;
file_expand_path(fname, str, tmp); file_expand_path(fname, str, tmp);
if (file_load_ok(RSTRING_PTR(tmp))) { if (file_load_ok(RSTRING_PTR(tmp))) {
RBASIC(tmp)->klass = RBASIC(*filep)->klass; RBASIC(tmp)->klass = rb_obj_class(*filep);
OBJ_FREEZE(tmp); OBJ_FREEZE(tmp);
*filep = tmp; *filep = tmp;
return j+1; return j+1;
@ -4572,7 +4572,7 @@ rb_find_file(VALUE path)
} }
return 0; return 0;
found: found:
RBASIC(tmp)->klass = RBASIC(path)->klass; RBASIC(tmp)->klass = rb_obj_class(path);
OBJ_FREEZE(tmp); OBJ_FREEZE(tmp);
} }
else { else {

2
io.c
View File

@ -4500,7 +4500,7 @@ io_reopen(VALUE io, VALUE nfile)
rb_io_binmode(io); rb_io_binmode(io);
} }
RBASIC(io)->klass = RBASIC(nfile)->klass; RBASIC(io)->klass = rb_obj_class(nfile);
return io; return io;
} }