Ruby1.9.0_2のバグ(プラットホーム固有かも)その1
Leopard上のMac Portsのruby1.9.0_2でMeteor(自作ライブラリ)のRuby移植版meteor.rb
をテストしていると下記のスクリプトの10000回ループのi=7643で「内部で組み立
てている正規表現が間違っている」とString#sub!がエラーをはく。
同じスクリプトをLeopard標準添付のruby 1.8.6 (2008-03-03 patchlevel 114)
でテストすると正常動作。
ruby1.9.0_3でテストしてエラーになるようならruby-dev MLに報告する予定。
#ruby-dev MLを参照してみたところ、該当するバグの報告は見当たらなかった。
test_xml.rb
#!bin ruby # -* coding: UTF-8 -*- require 'meteor' pf = Meteor::ParserFactory.build(Meteor::Parser.XML,"test.xml", "UTF-8") ps = pf.getParser #puts ps.document elm1 = ps.element("test","manbo","manbo") ps.attribute(elm1,"id2","cc") co_ps = ps.child(elm1) 10000.times { |i| co_ps.attribute("manbo",i.to_s) elm5 = co_ps.element("tech") co_ps.attribute(elm5,"eco","ema") co_ps.content(elm5,i.to_s) co_ps.print } co_ps.flush ps.print puts ps.document
test.xml
<?xml version="1.0" encoding="UTF-8"?> <root> <test manbo="manbo"> <tech mono="mono">こまねち</tech> </test> </root>
テスト結果:正常動作(10回ループの場合)
<?xml version="1.0" encoding="UTF-8"?> <root> <test manbo="0" id2="cc"> <tech mono="mono" eco="ema">0</tech> </test><test manbo="1" id2="cc"> <tech mono="mono" eco="ema">1</tech> </test><test manbo="2" id2="cc"> <tech mono="mono" eco="ema">2</tech> </test><test manbo="3" id2="cc"> <tech mono="mono" eco="ema">3</tech> </test><test manbo="4" id2="cc"> <tech mono="mono" eco="ema">4</tech> </test><test manbo="5" id2="cc"> <tech mono="mono" eco="ema">5</tech> </test><test manbo="6" id2="cc"> <tech mono="mono" eco="ema">6</tech> </test><test manbo="7" id2="cc"> <tech mono="mono" eco="ema">7</tech> </test><test manbo="8" id2="cc"> <tech mono="mono" eco="ema">8</tech> </test><test manbo="9" id2="cc"> <tech mono="mono" eco="ema">9</tech> </test> </root>
[2008.08.29 : 追記]
メソッド名変更に伴い、上記プログラムを修正。