ruby-trunk-changes r42474 - r42491

今日は Struct に通常メソッドとして用いない文字を含むフィールドを定義した時に SEGV する不具合の修正や、標準添付ライブラリ rexml のパーサが使う正規表現の修正などがありました。

kou:r42474 2013-08-09 23:50:11 +0900

lib/rss/rexmlparser.rb で REXML のバージョンをチェックしているコードがあったのですが、いずれも標準添付ライブラリなので不要として削除しています。ふーむ gem パッケージにはなってないみたいですね。 [ruby-core:56454] [Bug #8754]

ktsj:r42475 2013-08-10 00:27:41 +0900

ext/readline/readline.c の条件式に明示的にかっこをつけてコンパイラ警告を除去しています。

svn:r42476 2013-08-10 00:27:45 +0900

version.h の日付更新。

akr:r42477 2013-08-10 04:55:24 +0900

bignum.c でいくつかの構造体メンバ、関数の引数、変数などで BDIGIT の配列長を示すものの型を long から size_t に変更しています。

zzak:r42478 2013-08-10 05:46:48 +0900

標準添付ライブラリ rssRSS::Trackback に rdoc の :nodoc: タグを追加しています。このクラスは内部的なクラスなので rdoc から隠すようにしているみたいです。 [ruby-core:56456] [Bug #8755]

nobu:r42479 2013-08-10 09:12:05 +0900

識別子を表わす ID に "foo=" のように代入っぽく呼べるメソッドの Symbol の時に ID_ATTRSET ビットフラグを立てるときに、attr として使えるタイプかどうかチェックするコードを追加しています。

zzak:r42480 2013-08-10 09:19:44 +0900

proc.c の rdoc 用コメントの主にインデントの修正のみです。

zzak:r42481 2013-08-10 09:21:46 +0900

r42465 で追記した NEWS ファイルの Binding#local_variable_set の引数のミスを修正しています。今日直そうかと思ってたのですが Github でコメントがあったそうで、読んでいる人いますねー。 https://github.com/ruby/ruby/commit/a39e724#commitcomment-3831489

kou:r42482 2013-08-10 11:34:06 +0900

標準添付ライブラリ rexml の REXML::Parsers::BaseParser::PUBLIC という正規表現の定数で文字列先頭をさすつもりで "^" が使われていたところを "\A" に修正しています。 [ruby-dev:47551] [Bug #8701]

kou:r42483 2013-08-10 11:59:15 +0900

おそらく r42482 の関連だと思いますが test/rexml/parse/test_notation_declaration.rb にも類似のテストを追加しています。

kou:r42484 2013-08-10 12:01:56 +0900

標準添付ライブラリ rexml の REXML::Parsers::BaseParser::SYSTEM という正規表現の定数でも "^" を "\A" に変更する修正を行なっています。

kou:r42485 2013-08-10 12:02:37 +0900

r42484 の ChangeLog エントリにパッチ提供者のクレジットを追記しています。

kou:r42486 2013-08-10 12:40:58 +0900

rexml の parser のテストを追加しています。 おそらく r42484 の修正のぶんのテストを追加しているのだと思います。

kou:r42487 2013-08-10 12:46:43 +0900

標準添付ライブラリ rexml の REXML::Parsers::BaseParser の他の定数でも正規表現の "^" を "\A" に変更する修正を行なっています。 これらは動作には影響がないそうですが一応修正するとのこと。

kou:r42488 2013-08-10 12:48:30 +0900

ついでに標準添付ライブラリ rexml の lib/rexml/parsers/baseparser.rb のリファクタリング。 DOCTYPE の閉じタグにマッチさせるための正規表現を CDATA_END という定数を流用していたのを、内容は同じ正規表現ですが DOCTYPE_END という別の定数を定義して利用するようにしています。

kou:r42489 2013-08-10 12:51:30 +0900

REXML::Parsers::BaseParser::CDATA_END も正規表現の "^" を "\A" に修正しています。ああ、DOCTYPE_END とはここで同じになってたんですね。しかし CDATA_END は利用されていなかったそうです。なんと。

nobu:r42490 2013-08-10 13:53:31 +0900

r42479 の続きのようで、rb_attrset() で ID_ATTRSET の付加を許容する ID の scope を ID_LOCAL ID_CONST だけから ID_INSTANCE, ID_GLOBAL, ID_CLASS, ID_JUNK も追加しています。これにより Struct のフィールド名に "@a" なども許容するようになったみたいです。ID_JUNK ということは NUL 文字を含んでいるフィールド名も定義はできるみたいですね。あんまり使いたくはないですけどね! [Bug #8756]
ちなみにそのようなメソッドを起動するために __send__ を使うと、__send__(:"@a=", 0) と Symbol を渡すと呼べるけど __send__("@a=", 0) と String だと NoMethodError になってしまうようです。 "=" がつかないメソッドだとどちらも呼べるので追加の対応が必要そうです。

ktsj:r42491 2013-08-10 14:02:56 +0900

numeric.c の Float の rdoc 用コメントの typo 修正。