summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-11-09 04:37:36 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-11-09 04:37:36 +0000
commit4ab384be2d4a98868c8da9739609585efc15f920 (patch)
tree6d9052019b773701d489f0f37f58a397e8027bb7
parenta46c532ab83c1c080311e4c7948b6fc4e5d6df14 (diff)
* test/ruby/test_basicinstructions.rb: updated for new class
behavior. [ruby-dev:32192] * encoding.c (enc_name): Encoding should not rely on ENCODING in the FL_USERS flags. * encoding.c (rb_enc_from_encoding): do not call rb_enc_associate for encoding itself. * encoding.c (enc_register_at): ditto. * marshal.c (r_ivar): do not set real instance variable for encoding data associated. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13848 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog16
-rw-r--r--encoding.c12
-rw-r--r--marshal.c4
-rw-r--r--test/ruby/test_basicinstructions.rb12
4 files changed, 30 insertions, 14 deletions
diff --git a/ChangeLog b/ChangeLog
index c3c3822161..59e513b0a4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,22 @@ Fri Nov 9 12:56:36 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval_load.c (loaded_feature_path): check with type of given feature.
+Fri Nov 9 12:43:02 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/ruby/test_basicinstructions.rb: updated for new class
+ behavior. [ruby-dev:32192]
+
+ * encoding.c (enc_name): Encoding should not rely on ENCODING in
+ the FL_USERS flags.
+
+ * encoding.c (rb_enc_from_encoding): do not call rb_enc_associate
+ for encoding itself.
+
+ * encoding.c (enc_register_at): ditto.
+
+ * marshal.c (r_ivar): do not set real instance variable for
+ encoding data associated.
+
Fri Nov 9 10:43:55 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (send_internal): use self in the previous frame to check for
diff --git a/encoding.c b/encoding.c
index 97e6cfff50..15a2398f05 100644
--- a/encoding.c
+++ b/encoding.c
@@ -52,9 +52,7 @@ rb_enc_from_encoding(rb_encoding *encoding)
if (!encoding) return 0;
if (enc_initialized_p(encoding))
return ENC_FROM_ENCODING(encoding);
- enc = enc_new(encoding);
- rb_enc_associate(enc, encoding);
- return enc;
+ return enc_new(encoding);
}
static int
@@ -146,8 +144,8 @@ enc_register_at(int index, const char *name, rb_encoding *encoding)
encoding = ent->enc;
encoding->name = name;
if (rb_cEncoding) {
- VALUE enc = enc_new(encoding);
- rb_enc_associate_index(enc, index);
+ /* initialize encoding data */
+ enc_new(encoding);
}
else {
encoding->auxiliary_data = ENC_UNINITIALIZED;
@@ -523,13 +521,13 @@ static VALUE
enc_to_s(VALUE self)
{
return rb_sprintf("<%s:%s>", rb_obj_classname(self),
- rb_enc_name(enc_get_encoding(self)));
+ rb_enc_name((rb_encoding*)DATA_PTR(self)));
}
static VALUE
enc_name(VALUE self)
{
- return rb_str_new2(rb_enc_name(enc_get_encoding(self)));
+ return rb_str_new2(rb_enc_name((rb_encoding*)DATA_PTR(self)));
}
static VALUE
diff --git a/marshal.c b/marshal.c
index fdfa9868c5..c6b2d19838 100644
--- a/marshal.c
+++ b/marshal.c
@@ -1086,7 +1086,9 @@ r_ivar(VALUE obj, struct load_arg *arg)
int idx = rb_enc_find_index(StringValueCStr(val));
if (idx > 0) rb_enc_associate_index(obj, idx);
}
- rb_ivar_set(obj, id, val);
+ else {
+ rb_ivar_set(obj, id, val);
+ }
}
}
}
diff --git a/test/ruby/test_basicinstructions.rb b/test/ruby/test_basicinstructions.rb
index 2e039f5163..6ac93e037a 100644
--- a/test/ruby/test_basicinstructions.rb
+++ b/test/ruby/test_basicinstructions.rb
@@ -483,16 +483,16 @@ class TestBasicInstructions < Test::Unit::TestCase
assert_equal 'B/singleton', CVarB.cvB
assert_equal 'B/singleton', CVarB.cvB2
assert_equal 'B/singleton', CVarB.new.cvB
- assert_equal 'CVarA@@cv', CVarA.cv
- assert_equal 'CVarA@@cv', CVarA.cv2
- assert_equal 'CVarA@@cv', CVarA.new.cv
+ assert_equal 'B/singleton', CVarA.cv
+ assert_equal 'B/singleton', CVarA.cv2
+ assert_equal 'B/singleton', CVarA.new.cv
CVarB.new.cvB = 'B/instance'
assert_equal 'B/instance', CVarB.cvB
assert_equal 'B/instance', CVarB.cvB2
assert_equal 'B/instance', CVarB.new.cvB
- assert_equal 'CVarA@@cv', CVarA.cv
- assert_equal 'CVarA@@cv', CVarA.cv2
- assert_equal 'CVarA@@cv', CVarA.new.cv
+ assert_equal 'B/instance', CVarA.cv
+ assert_equal 'B/instance', CVarA.cv2
+ assert_equal 'B/instance', CVarA.new.cv
CVarA.cv = 'CVarA@@cv'
CVarB.cvB = 'CVarB@@cv'