summaryrefslogtreecommitdiffhomepage
path: root/mrbgems
diff options
context:
space:
mode:
authorHiroshi Mimaki <[email protected]>2016-08-17 15:29:59 +0900
committerHiroshi Mimaki <[email protected]>2016-08-17 15:29:59 +0900
commit861b0eed7b3a2b8fae863affaf40936519c6964a (patch)
tree086dda3296e3aa2c810dc21d2c071bad4f90e5b2 /mrbgems
parentee40f9bbbd5f4a3507b2d8a04b51a00dd38dcc1a (diff)
downloadmruby-861b0eed7b3a2b8fae863affaf40936519c6964a.tar.gz
mruby-861b0eed7b3a2b8fae863affaf40936519c6964a.zip
Fix String#ord failure which return a negative value
Diffstat (limited to 'mrbgems')
-rw-r--r--mrbgems/mruby-string-ext/src/string.c2
-rw-r--r--mrbgems/mruby-string-ext/test/string.rb4
2 files changed, 5 insertions, 1 deletions
diff --git a/mrbgems/mruby-string-ext/src/string.c b/mrbgems/mruby-string-ext/src/string.c
index c2ee1fc23..2a52d53b3 100644
--- a/mrbgems/mruby-string-ext/src/string.c
+++ b/mrbgems/mruby-string-ext/src/string.c
@@ -529,7 +529,7 @@ mrb_str_ord(mrb_state* mrb, mrb_value str)
{
if (RSTRING_LEN(str) == 0)
mrb_raise(mrb, E_ARGUMENT_ERROR, "empty string");
- return mrb_fixnum_value(RSTRING_PTR(str)[0]);
+ return mrb_fixnum_value((unsigned char)RSTRING_PTR(str)[0]);
}
#endif
diff --git a/mrbgems/mruby-string-ext/test/string.rb b/mrbgems/mruby-string-ext/test/string.rb
index aa3e8a192..a5d55a7ee 100644
--- a/mrbgems/mruby-string-ext/test/string.rb
+++ b/mrbgems/mruby-string-ext/test/string.rb
@@ -497,6 +497,10 @@ end
assert('String#ord') do
got = "hello!".split('').map {|x| x.ord}
expect = [104, 101, 108, 108, 111, 33]
+ unless UTF8STRING
+ got << "\xff".ord
+ expect << 0xff
+ end
assert_equal expect, got
end