summaryrefslogtreecommitdiffstats
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
commit63a96b313b5f1aff1edfd86e688b5519a8974af5 (patch)
tree643eb5108a159edcf6791d2de80f4601348129b3 /string.c
parent03dad72bf8b5e40888bd7bc5a43a4dd624f4d45e (diff)
downloadruby-63a96b313b5f1aff1edfd86e688b5519a8974af5.tar.gz
ruby-63a96b313b5f1aff1edfd86e688b5519a8974af5.tar.xz
ruby-63a96b313b5f1aff1edfd86e688b5519a8974af5.zip
* 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: http://svn.ruby-lang.org/repos/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 4969b7513..19edb8cae 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;
}