[MAYAA-67] ServiceCycle のgetOriginalNode().toString() が無限ループする。(StackOverFlow) Created: 2009-05-29  Updated: 2009-05-29  Resolved: 2009-05-29

Status: Resolved
Project: Mayaa
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Major
Reporter: katochin Assignee: katochin
Resolution: Fixed Votes: 0
Labels: None
Environment:

ServiceProvider の templateBuilder の optimizeオプションがtrueの時。(デフォルト設定)



 Description   

mayaaのスクリプトから、裏技的にではあるが、
「originalNode」を参照することで、m:idで紐ついた、HTMLテンプレート内の対象タグの情報が参照できるが、「originalNode」と書くと、SpecificationNodeImplのtoString()の中で親ノードの参照が無限ループする。

この問題の原因を調査し対応する。



 Comments   
Comment by katochin [ 2009-05-29 ]

ツリーの子要素を追加する際に、親要素が追加しようとしているノードかどうかをチェックして、同じであれば追加しないように修正した。
Rev:3440

Comment by katochin [ 2009-05-29 ]

ノードの最適化処置の中で、最適化済みのノードツリーを構築するが、 HTMLタグの1つに対して複数のプロセッサがぶら下がることがある。
この時、並列にぶら下がっているはずのプロセッサのoriginalNodeを、最適化結果ノードツリーに対して親子関係にして登録をしてしまっていた。
これが原因となり、その後に続く、最適化結果ノードツリーから各ノードへのフィードバック(ノードの関係性の再構築)を行うときに、
parentNodeに、自身のnodeをセットしてしまうというケースが埋め込まれることになり、パスを辿って文字列を表現する、toString()が無限ループになるという結果に陥っていた。

Comment by katochin [ 2009-05-29 ]

optimize=trueの時だけ起こるので、1.1以降に埋め込んだと考えられるので、調査・対応する。

Generated at Thu Apr 25 09:23:45 JST 2024 using Jira 9.15.0#9150000-sha1:9ead8528714127d8cfabf2446010d7e62c0a195c.