Uploaded image for project: 'Apache Flex'
  1. Apache Flex
  2. FLEX-27924

Under specific conditions (detailed inside), mx:Text will hang or throw an exception

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • Adobe Flex SDK 4.5.1 (Release)
    • None
    • mx: Text
    • Affected OS(s): All OS Platforms
      Affected OS(s): All OS Platforms
      Browser: Other (specify version)
      Language Found: English

    Description

      Steps to reproduce:

      <?xml version="1.0" encoding="utf-8"?>
      <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

      <mx:HBox>

      <mx:VBox>
      <mx:Label text="test"/>
      </mx:VBox>

      <mx:VBox>
      <mx:Text>
      <mx:htmlText>
      <![CDATA[1
      2
      3
      4
      5
      6
      7
      8
      9]]
      >
      </mx:htmlText>
      </mx:Text>
      </mx:VBox>

      </mx:HBox>

      </mx:Application>

      In order to fail, you must build this with Flash Builder 4.5.1 (I did not test with earlier versions) and check the
      "Use Flash Text Engine in MX components" check box in the Flex Compiler options. If this option is not set (i.e., without FTE),
      the code above works fine.

      There must be two non-empty VBoxes (the order is not important) and the htmlText must display more than 8 lines.
      The same can be achieved by programmatically setting the htmlText to contain more than 8 lines, either
      with explicit newlines or with <br> tags. The contents of the lines is immaterial. 8 lines or fewer will not cause this bug.
      If the other VBox is empty, the bug will not manifest itself.

      Actual Results:

      This either hangs the browser (sometimes permanently, sometimes for a few minutes), or it throws a null pointer exception with
      this stack trace:

      at flashx.textLayout.compose::SimpleCompose/finalParcelAdjustment()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\compose\SimpleCompose.as:298]
      at flashx.textLayout.compose::BaseCompose/finishParcel()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\compose\BaseCompose.as:2078]
      at flashx.textLayout.compose::BaseCompose/parcelHasChanged()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\compose\BaseCompose.as:2247]
      at flashx.textLayout.compose::BaseCompose/advanceToNextParcel()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\compose\BaseCompose.as:2220]
      at flashx.textLayout.compose::BaseCompose/composeTextFlow()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\compose\BaseCompose.as:467]
      at flashx.textLayout.compose::SimpleCompose/composeTextFlow()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\compose\SimpleCompose.as:109]
      at TCMFactoryDisplayComposer/http://ns.adobe.com/textLayout/internal/2008::callTheComposer()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\container\TextContainerManager.as:2640]
      at flashx.textLayout.compose::StandardFlowComposer/internalCompose()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\compose\StandardFlowComposer.as:760]
      at flashx.textLayout.compose::StandardFlowComposer/compose()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\compose\StandardFlowComposer.as:824]
      at flashx.textLayout.factory::TextFlowTextLineFactory/createTextLinesInternal()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\factory\TextFlowTextLineFactory.as:140]
      at flashx.textLayout.factory::TextFlowTextLineFactory/createTextLines()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\factory\TextFlowTextLineFactory.as:104]
      at flashx.textLayout.container::TextContainerManager/compose()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\container\TextContainerManager.as:1306]
      at flashx.textLayout.container::TextContainerManager/updateContainer()[C:\Vellum\branches\v2\2.0\dev\output\openSource\textLayout\src\flashx\textLayout\container\TextContainerManager.as:1345]
      at HTMLHelper/composeHTMLText()[E:\dev\4.5.1\frameworks\projects\spark\src\mx\core\FTETextField.as:3683]
      at mx.core::FTETextField/validateNow()[E:\dev\4.5.1\frameworks\projects\spark\src\mx\core\FTETextField.as:2524]
      at mx.core::FTETextField/get textWidth()[E:\dev\4.5.1\frameworks\projects\spark\src\mx\core\FTETextField.as:1651]
      at mx.controls::Text/measureUsingWidth()[E:\dev\4.5.1\frameworks\projects\mx\src\mx\controls\Text.as:493]
      at mx.controls::Text/measure()[E:\dev\4.5.1\frameworks\projects\mx\src\mx\controls\Text.as:375]
      at mx.core::UIComponent/measureSizes()[E:\dev\4.5.1\frameworks\projects\framework\src\mx\core\UIComponent.as:8496]
      at mx.core::UIComponent/validateSize()[E:\dev\4.5.1\frameworks\projects\framework\src\mx\core\UIComponent.as:8420]
      at mx.managers::LayoutManager/validateSize()[E:\dev\4.5.1\frameworks\projects\framework\src\mx\managers\LayoutManager.as:665]
      at mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\4.5.1\frameworks\projects\framework\src\mx\managers\LayoutManager.as:792]
      at mx.managers::LayoutManager/doPhasedInstantiationCallback()[E:\dev\4.5.1\frameworks\projects\framework\src\mx\managers\LayoutManager.as:1180]

      The last line that I can debug is line 112 of TextFlowTextLineFactory.as which contains:

      TextLineFactoryBase.endFactoryCompose(saved);

      The variable 'saved' is null at this point.

      Expected Results:

      A two column display with the string "test" in one column and a vertical sequence of numbers in the other.

      Workaround (if any):

      Using s:Application, s:VGroup, and s:HGroup instead of their mx equivalents eliminates (or hides) the problem.

      Attachments

        Activity

          People

            Unassigned Unassigned
            adobejira Adobe JIRA
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated: