summaryrefslogtreecommitdiff
path: root/string.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-10-13 16:32:40 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-10-13 16:32:40 +0000
commit9c24fed339c77552223d5da339a1e58419bd0b71 (patch)
tree643eb5108a159edcf6791d2de80f4601348129b3 /string.c
parent04c290820c99e5b0daefa4c55d1a80abcfd17aab (diff)
* encoding.c (rb_cEncoding): new Encoding class.
* encoding.c (rb_to_encoding, rb_to_encoding_index): helper functions. * encoding.c (rb_obj_encoding): return Encoding object now. * gc.c (garbage_collect): mark Encoding objects. * string.c (rb_str_force_encoding): accept Encoding object as well as encoding name. * include/ruby/encoding.h (rb_to_encoding_index, rb_to_encoding): prototypes. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13692 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'string.c')
-rw-r--r--string.c13
1 files changed, 2 insertions, 11 deletions
diff --git a/string.c b/string.c
index 4969b7513f..19edb8cae0 100644
--- a/string.c
+++ b/string.c
@@ -5112,19 +5112,10 @@ rb_str_setter(VALUE val, ID id, VALUE *var)
*/
static VALUE
-rb_str_force_encoding(VALUE str, VALUE encname)
+rb_str_force_encoding(VALUE str, VALUE enc)
{
- const char *name;
- int idx;
-
- if (NIL_P(encname)) {
- idx = 0;
- }
- else if ((idx = rb_enc_find_index(name = StringValueCStr(encname))) < 0) {
- rb_raise(rb_eArgError, "invalid encoding name - %s", name);
- }
str_modifiable(str);
- rb_enc_associate_index(str, idx);
+ rb_enc_associate(str, rb_to_encoding(enc));
return str;
}