[#47319] Translating MRI Guides! — Zachary Scott <zachary@...>
Hello Hashimoto-san!
5 messages
2013/05/03
[#47340] [ruby-trunk - Bug #8401][Open] BigDecimal.new("2").power(1e20) is zero. — "akr (Akira Tanaka)" <akr@...>
4 messages
2013/05/13
[#47341] LONG_LONG availability — Tanaka Akira <akr@...>
気がついてしまったのですが、Ruby 1.9.2 のころから
7 messages
2013/05/13
[#47363] -Lprefix/lib — Tanaka Akira <akr@...>
最近試しているクロスコンパイルな CI で、
5 messages
2013/05/22
[#47374] Re: [ruby-cvs:48158] xibbar:r40990 (trunk): fix a typo. — Zachary Scott <zachary@...>
Do you mean "modularized"?
3 messages
2013/05/30
[#47377] RubyKaigi 2013, 5/31(金)の'Ruby Comitter vs. the World'企画へのご協力のお願い — Kakutani Shintaro <shintaro@...>
かくたにです。RubyKaigi 2013 のほうから来ました。
5 messages
2013/05/30
[ruby-dev:47325] [ruby-trunk - Bug #8378][Open] json/generator/generator.c: warning: array subscript has type 'char'
From:
"akr (Akira Tanaka)" <akr@...>
Date:
2013-05-07 13:26:28 UTC
List:
ruby-dev #47325
Issue #8378 has been reported by akr (Akira Tanaka).
----------------------------------------
Bug #8378: json/generator/generator.c: warning: array subscript has type 'char'
https://bugs.ruby-lang.org/issues/8378
Author: akr (Akira Tanaka)
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: r40599 ruby 2.1.0dev (2013-05-07) [i386-cygwin]
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN
ふと、cygwin を target とする cross-compile をしてみたところ、
以下の警告を見つけました。
(たぶん cross でなくても警告されると思います)
make[2]: Entering directory `/extdisk/chkbuild/chkbuild/tmp/build/20130507T115727Z/ruby/ext/json/generator'
compiling generator.c
generator.c: In function 'isArrayOrObject':
generator.c:897:5: warning: array subscript has type 'char' [-Wchar-subscripts]
generator.c:898:5: warning: array subscript has type 'char' [-Wchar-subscripts]
linking shared-object json/ext/generator.so
http://www.rubyist.net/~akr/chkbuild/debian/crossruby-trunk-cygwin/log/20130507T115727Z.log.html.gz
コードを見てみると以下のようになっていて、
char * を dereference した結果を isspace に渡しています。
895 char *p = RSTRING_PTR(string), *q = p + string_len - 1;
896 if (string_len < 2) return 0;
897 for (; p < q && isspace(*p); p++);
898 for (; q > p && isspace(*q); q--);
899 return (*p == '[' && *q == ']') || (*p == '{' && *q == '}');
char が signed な環境では、*p や *q は負になるかもしれないのでよろしくなくて、
*(unsigned char *)p とかにしたほうがいんじゃないでしょうか。
--
http://bugs.ruby-lang.org/