RubyCocoa 昨日のコミット
- .bridgesupportファイルで"value64"と"value"の両方に値があるとき、64bitではvalue64の値をとるように(r2258)
% cd /System/Library/Frameworks/Foundation.framework % ack -a -G .bridgesupport NSNotFound Resources Resources/BridgeSupport/Foundation.bridgesupport 637:<enum name='NSNotFound' value64='-1' value='2147483647'/> Resources/BridgeSupport/FoundationFull.bridgesupport 696:<enum name='NSNotFound' value64='-1' value='2147483647'/>
というように、64bit用の値も定義されてるんだけどそっちを読んでない。valueがあるときにはvalue64を読まないようになってた(BridgeSupport.m)。それは意味的におかしいと思うので直した。
だけど、NSNotFoundを使うところではunsigned intを返すメソッドが多いので、Ruby上ではOSX::NSNotFound != OSX::NSIntegerMaxという問題は残る。空の時にOSX::NSSet#to_aがいつまでたっても終わらないでござる。NSIntegerMax回まわそうとするから。
% ack -a -G .bridgesupport NSIntegerMax Resources Resources/BridgeSupport/Foundation.bridgesupport 563:<enum name='NSIntegerMax' value64='9223372036854775807' value='2147483647'/ Resources/BridgeSupport/FoundationFull.bridgesupport 622:<enum name='NSIntegerMax' value64='9223372036854775807' value='2147483647'/
ということで以前の d:id:kimuraw:20090910:p1 はまちがい。/Library/BridgeSupportは古いファイルが残ってただけだった。
ついでに。