From f6c2ad67829ce5419990d7c3c2be6a62fea0a7a7 Mon Sep 17 00:00:00 2001 From: nobu Date: Sat, 6 Oct 2007 05:56:09 +0000 Subject: * encoding.c (rb_enc_register): returns new index or -1 if failed. * encoding.c (rb_enc_alias): check if original name is registered. * encoding.c (rb_enc_init): register in same order as kcode options in re.c. added new aliases. * string.c (rb_str_force_encoding): check if valid encoding name. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@13643 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- string.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'string.c') diff --git a/string.c b/string.c index 985c42778..d53476975 100644 --- a/string.c +++ b/string.c @@ -5114,8 +5114,17 @@ rb_str_setter(VALUE val, ID id, VALUE *var) static VALUE rb_str_force_encoding(VALUE str, VALUE encname) { + 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(str, rb_enc_find(StringValueCStr(encname))); + rb_enc_associate_index(str, idx); return str; } -- cgit