diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-10-09 16:55:51 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-10-09 16:55:51 +0000 |
commit | 017ff9bfa2daadb7c27953eb1ae70c2833dfa80c (patch) | |
tree | af4f97bebc2862ea20e0b2b02b186fa01955b7ac /encoding.c | |
parent | 05124e6a557cc0814214803746c04a5dcffc63d3 (diff) | |
download | ruby-017ff9bfa2daadb7c27953eb1ae70c2833dfa80c.tar.gz |
* encoding.c (enc_names): minor improvement.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19736 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'encoding.c')
-rw-r--r-- | encoding.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/encoding.c b/encoding.c index 22c362b381..632f323c3d 100644 --- a/encoding.c +++ b/encoding.c @@ -824,12 +824,14 @@ enc_name(VALUE self) } static int -enc_names_i(st_data_t name, st_data_t idx, st_data_t ary) +enc_names_i(st_data_t name, st_data_t idx, st_data_t args) { - if ((int)idx == FIX2INT(rb_ary_entry(ary, 0))) { + VALUE *arg = (VALUE *)args; + + if ((int)idx == (int)arg[0]) { VALUE str = rb_usascii_str_new2((char *)name); OBJ_FREEZE(str); - rb_ary_push(ary, str); + rb_ary_push(arg[1], str); } return ST_CONTINUE; } @@ -845,11 +847,12 @@ enc_names_i(st_data_t name, st_data_t idx, st_data_t ary) static VALUE enc_names(VALUE self) { - VALUE ary = rb_ary_new2(0); - rb_ary_push(ary, INT2FIX(rb_to_encoding_index(self))); - st_foreach(enc_table.names, enc_names_i, (st_data_t)ary); - rb_ary_shift(ary); - return ary; + VALUE args[2]; + + args[0] = (VALUE)rb_to_encoding_index(self); + args[1] = rb_ary_new2(0); + st_foreach(enc_table.names, enc_names_i, (st_data_t)args); + return args[1]; } /* |