• Type: Bug
    • Resolution: Fixed
    • Priority: Major
    • None
    • Affects Version/s: None
    • Component/s: None
    • None
    • Environment:
      ServiceProvider の templateBuilder の optimizeオプションがtrueの時。(デフォルト設定)

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

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

          [MAYAA-67] ServiceCycle のgetOriginalNode().toString() が無限ループする。(StackOverFlow)

          katochin added a comment -

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

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

          katochin added a comment -

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

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

          katochin added a comment -

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

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

            Assignee:
            katochin
            Reporter:
            katochin
            Votes:
            0 Vote for this issue
            Watchers:
            Start watching this issue

              Created:
              Updated:
              Resolved: