summaryrefslogtreecommitdiffhomepage
path: root/src/string.c
diff options
context:
space:
mode:
authorRobert Mosolgo <[email protected]>2014-11-24 09:30:45 -0800
committerYukihiro "Matz" Matsumoto <[email protected]>2014-11-26 01:03:38 +0900
commit0133d9ac70fd8d3ebe873e29c12cabfd3ff3f1a1 (patch)
tree8f293f7de5f4d6ed3151952469bf85626c1aad81 /src/string.c
parent28bd33297ad42c2eed1cca45345166a072b3bbf2 (diff)
downloadmruby-0133d9ac70fd8d3ebe873e29c12cabfd3ff3f1a1.tar.gz
mruby-0133d9ac70fd8d3ebe873e29c12cabfd3ff3f1a1.zip
fix(String) String#[] accepts float; close #2650 #2651
Diffstat (limited to 'src/string.c')
-rw-r--r--src/string.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/string.c b/src/string.c
index 5eaed533a..20f371aa2 100644
--- a/src/string.c
+++ b/src/string.c
@@ -15,6 +15,7 @@
#include "mruby/class.h"
#include "mruby/range.h"
#include "mruby/string.h"
+#include "mruby/numeric.h"
#include "mruby/re.h"
const char mrb_digitmap[] = "0123456789abcdefghijklmnopqrstuvwxyz";
@@ -750,6 +751,8 @@ mrb_str_aref(mrb_state *mrb, mrb_value str, mrb_value indx)
mrb_regexp_check(mrb, indx);
switch (mrb_type(indx)) {
+ case MRB_TT_FLOAT:
+ indx = mrb_flo_to_fixnum(mrb, indx);
case MRB_TT_FIXNUM:
idx = mrb_fixnum(indx);
@@ -813,6 +816,7 @@ num_index:
*
* a = "hello there"
* a[1] #=> 101(1.8.7) "e"(1.9.2)
+ * a[1.1] #=> "e"(1.9.2)
* a[1,3] #=> "ell"
* a[1..3] #=> "ell"
* a[-3,2] #=> "er"