From 72ae2150c74359210e3e842f861d1dd66be464b6 Mon Sep 17 00:00:00 2001 From: Masamitsu MURASE Date: Wed, 12 Dec 2012 01:25:13 +0900 Subject: Modify String#bytes. It should return non-negative integer. --- src/string.c | 2 +- test/t/string.rb | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/string.c b/src/string.c index ac79f7c58..dee383fab 100644 --- a/src/string.c +++ b/src/string.c @@ -2997,7 +2997,7 @@ mrb_str_bytes(mrb_state *mrb, mrb_value str) { struct RString *s = mrb_str_ptr(str); mrb_value a = mrb_ary_new_capa(mrb, s->len); - char *p = s->ptr, *pend = p + s->len; + unsigned char *p = (unsigned char *)(s->ptr), *pend = p + s->len; while (p < pend) { mrb_ary_push(mrb, a, mrb_fixnum_value(p[0])); diff --git a/test/t/string.rb b/test/t/string.rb index 1e921c668..05a610e00 100644 --- a/test/t/string.rb +++ b/test/t/string.rb @@ -369,7 +369,10 @@ assert('String#bytes') do str1 = "hello" bytes1 = [104, 101, 108, 108, 111] - str1.bytes == bytes1 + str2 = "\xFF" + bytes2 = [0xFF] + + str1.bytes == bytes1 and str2.bytes == bytes2 end assert('String#each_byte') do -- cgit v1.2.3