about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2010-07-06 10:33:01 +0000
committerEric Wong <normalperson@yhbt.net>2010-07-06 10:39:46 +0000
commit9ce364b079efdb3bcef504a84e2460a9b2b4b9ad (patch)
tree54cb5cc97a940687b0a3405a25851c7cee8973ce
parent9ab356d3969779d7f8f4be6579bfa7570c703f21 (diff)
downloadrainbows-9ce364b079efdb3bcef504a84e2460a9b2b4b9ad.tar.gz
rb_str_slice_bang() allocates a new string internally and calls
rb_str_aref_m() AND rb_str_aset_m(), too.  String#[] just
calls rb_str_aref_m() directly, so it's a much quicker code
path.  Also, "[]" methods dispatch faster under 1.9, too.
-rw-r--r--lib/rainbows/byte_slice.rb2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/rainbows/byte_slice.rb b/lib/rainbows/byte_slice.rb
index 09d1188..2d5586c 100644
--- a/lib/rainbows/byte_slice.rb
+++ b/lib/rainbows/byte_slice.rb
@@ -3,7 +3,7 @@ module Rainbows::ByteSlice
   if String.method_defined?(:encoding)
     def byte_slice(buf, range)
       if buf.encoding != Encoding::BINARY
-        buf.dup.force_encoding(Encoding::BINARY).slice!(range)
+        buf.dup.force_encoding(Encoding::BINARY)[range]
       else
         buf[range]
       end