[#47548] [ruby-trunk - Feature #8696][Open] Process.setproctitle — "znz (Kazuhiro NISHIYAMA)" <redmine@...>

13 messages 2013/07/27

[#47559] [ruby-trunk - Bug #8711][Open] 最近NoMemoryErrorが多い — "naruse (Yui NARUSE)" <naruse@...>

13 messages 2013/07/31

[ruby-dev:47487] [ruby-trunk - Bug #8602] REXML::Element#add_text and REXML::Text#<<

From: "kou (Kouhei Sutou)" <kou@...>
Date: 2013-07-07 02:53:08 UTC
List: ruby-dev #47487
Issue #8602 has been updated by kou (Kouhei Sutou).

Assignee set to kou (Kouhei Sutou)

Text#<<のドキュメントを読むと、rawモードのときだけサポートしているようにみえました。
rawモードだと@normalize/@unnormalizeを使わないので、ここでこれらをクリアーしていないのは意図的だったのだろうと思います。

ただ、キャッシュをクリアーすることによりrawモードでもrawモードでなくても動くようになるので、キャッシュをクリアーすることにしました!

報告ありがとうございました!
----------------------------------------
Bug #8602: REXML::Element#add_text and REXML::Text#<<
https://bugs.ruby-lang.org/issues/8602#change-40336

Author: ohai (Ippei Obayashi)
Status: Closed
Priority: Normal
Assignee: kou (Kouhei Sutou)
Category: lib
Target version: 
ruby -v: ruby 2.1.0dev (2013-07-04 trunk 41732) [x86_64-linux]
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN


以下のコードは "<e>foo bar</e>" が出力されることが期待されますが実際には "<e>foo</e>" が出力されます。 
  require 'rexml/document'
  doc = REXML::Document.new("<e/>")
  doc.root.add_text("foo")
  doc.to_s
  doc.root.add_text(" bar")
  p doc.root.to_s
doc.to_s の部分をコメントアウトすると挙動が変わり "<e>foo bar</e>" が出力されます。

REXML::Element#add_text が呼び出している REXML::Text#<< が内部状態(@string)を変化させているにもかかわらず
キャッシュ(@normalized, @unnormalized)をクリアしていないのが原因だと思われます。

添付したパッチで修正されると思います。


-- 
http://bugs.ruby-lang.org/

In This Thread

Prev Next