[ 
https://issues.apache.org/jira/browse/FLEX-34649?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mihai Chira updated FLEX-34649:
-------------------------------
    Attachment: noBug.txt
                bug.txt

I attached some trace outputs from pasting a text which doesn't reproduce the 
bug, and from the one which does. (For more info about the trace format, see 
traffic-debug-tools on github.) If you do a diff, you can see that although the 
resulting text has the same number of lines (3 lines with text, and two empty 
new lines), the construction is done differently in 
BaseCompose.composeBlockElement():

In the *no* bug scenario:
# After the paste, EditManager.pasteTextScrap() calls ... which calls 
FlowElement.shallowCopy(), which creates three instances of ParagraphElement 
("ParagraphElement-3", "ParagraphElement-4" and "ParagraphElement-5")
# among others, BaseCompose.composeBlockElement() calls 
BaseCompose.composeParagraphElement(ParagraphElement-4)
## in turn, this calls ParagraphElement-4.createTextBlock() and
## ParagraphElement-4.releaseTextBlock()

Everything is identical in the buggy scenario, except the last step, where 
ParagraphElement-4.releaseTextBlock() doesn't happen. I don't understand the 
algorithm in BaseCompose.composeParagraphElement() around the okToRelease 
variable which controls this.

PS: there are other differences in the diff between the buggy and no-bug 
scenarios; the one above is just the first one.

> Fatal errors in TextBlock after pasting text of specific length in TextArea
> ---------------------------------------------------------------------------
>
>                 Key: FLEX-34649
>                 URL: https://issues.apache.org/jira/browse/FLEX-34649
>             Project: Apache Flex
>          Issue Type: Bug
>          Components: Spark: TextArea
>    Affects Versions: Apache Flex 4.12.1
>            Reporter: Mihai Chira
>            Assignee: Mihai Chira
>              Labels: easytest
>         Attachments: FLEX-34649.ZIP, bug.txt, noBug.txt
>
>
> h2. Scenario 1
> *Steps to reproduce*:
> # Compile and run the attached project
> # Click on the TextArea and press SPACE, then LEFT
> # Paste this text, _including the empty line at the end_: {noformat}This 
> sentence needs to wrap with one or two characters lik: w
> {noformat}
> # Press DELETE
> *Desired behaviour*: the space is deleted without a fatal
> *Actual behaviour*: {noformat}TypeError: Error #1009: Cannot access a 
> property or method of a null object reference.
> at 
> flashx.textLayout.elements::ParagraphElement/findNextAtomBoundary()[C:\Users\evolverine\Adobe
>  Flash Builder 
> 4.7\FLEX-26478\src\flashx\textLayout\elements\ParagraphElement.as:576]
> at 
> flashx.textLayout.utils::NavigationUtil$/nextAtomHelper()[/Users/aharui/git/flex/master/flex-tlf/textLayout/src/flashx/textLayout/utils/NavigationUtil.as:93]
> at 
> flashx.textLayout.utils::NavigationUtil$/doIncrement()[/Users/aharui/git/flex/master/flex-tlf/textLayout/src/flashx/textLayout/utils/NavigationUtil.as:58]
> at 
> flashx.textLayout.utils::NavigationUtil$/nextAtomPosition()[/Users/aharui/git/flex/master/flex-tlf/textLayout/src/flashx/textLayout/utils/NavigationUtil.as:104]
> at 
> flashx.textLayout.edit::EditManager/deleteNextCharacter()[/Users/aharui/git/flex/master/flex-tlf/textLayout/src/flashx/textLayout/edit/EditManager.as:1273]
> at 
> flashx.textLayout.edit::EditManager/keyDownHandler()[/Users/aharui/git/flex/master/flex-tlf/textLayout/src/flashx/textLayout/edit/EditManager.as:371]
> at 
> flashx.textLayout.container::ContainerController/keyDownHandler()[C:\Users\evolverine\Adobe
>  Flash Builder 
> 4.7\FLEX-26478\src\flashx\textLayout\container\ContainerController.as:2539]
> at 
> flashx.textLayout.container::TextContainerManager/keyDownHandler()[/Users/aharui/git/flex/master/flex-tlf/textLayout/src/flashx/textLayout/container/TextContainerManager.as:1889]
> at 
> spark.components.supportClasses::RichEditableTextContainerManager/keyDownHandler()[/Users/aharui/release4.13.0/frameworks/projects/spark/src/spark/components/supportClasses/RichEditableTextContainerManager.as:665]
> {noformat}
> ----
> h2. Scenario 2
> *Steps to reproduce*:
> # Compile and run the attached project
> # Click on the TextArea
> # Paste this text: {noformat}:Boolean = tl.getAtomBidiLevel(currentAtomIndex)
> if{noformat}
> # Press LEFT / BACKSPACE
> *Desired behaviour*: the cursor moves left without an error / the last 
> character ("f") is deleted without an error.
> *Actual behaviour*: {noformat}TypeError: Error #1009: Cannot access a 
> property or method of a null object reference.
> at 
> flashx.textLayout.elements::ParagraphElement/findPreviousAtomBoundary()[C:\Users\evolverine\Adobe
>  Flash Builder 
> 4.7\FLEX-26478\src\flashx\textLayout\elements\ParagraphElement.as:493]
> at 
> flashx.textLayout.utils::NavigationUtil$/previousAtomHelper()[/Users/aharui/git/flex/master/flex-tlf/textLayout/src/flashx/textLayout/utils/NavigationUtil.as:70]
> at 
> flashx.textLayout.utils::NavigationUtil$/doIncrement()[/Users/aharui/git/flex/master/flex-tlf/textLayout/src/flashx/textLayout/utils/NavigationUtil.as:58]
> at 
> flashx.textLayout.utils::NavigationUtil$/previousAtomPosition()[/Users/aharui/git/flex/master/flex-tlf/textLayout/src/flashx/textLayout/utils/NavigationUtil.as:81]
> at 
> flashx.textLayout.utils::NavigationUtil$/moveBackwardHelper()[/Users/aharui/git/flex/master/flex-tlf/textLayout/src/flashx/textLayout/utils/NavigationUtil.as:229]
> at 
> flashx.textLayout.utils::NavigationUtil$/previousCharacter()[/Users/aharui/git/flex/master/flex-tlf/textLayout/src/flashx/textLayout/utils/NavigationUtil.as:292]
> at 
> flashx.textLayout.edit::SelectionManager/handleLeftArrow()[/Users/aharui/git/flex/master/flex-tlf/textLayout/src/flashx/textLayout/edit/SelectionManager.as:1640]
> at 
> flashx.textLayout.edit::SelectionManager/handleKeyEvent()[/Users/aharui/git/flex/master/flex-tlf/textLayout/src/flashx/textLayout/edit/SelectionManager.as:1807]
> at 
> flashx.textLayout.edit::SelectionManager/keyDownHandler()[/Users/aharui/git/flex/master/flex-tlf/textLayout/src/flashx/textLayout/edit/SelectionManager.as:1870]
> at 
> flashx.textLayout.edit::EditManager/keyDownHandler()[/Users/aharui/git/flex/master/flex-tlf/textLayout/src/flashx/textLayout/edit/EditManager.as:291]
> at 
> flashx.textLayout.container::ContainerController/keyDownHandler()[C:\Users\evolverine\Adobe
>  Flash Builder 
> 4.7\FLEX-26478\src\flashx\textLayout\container\ContainerController.as:2539]
> at 
> flashx.textLayout.container::TextContainerManager/keyDownHandler()[/Users/aharui/git/flex/master/flex-tlf/textLayout/src/flashx/textLayout/container/TextContainerManager.as:1889]
> at 
> spark.components.supportClasses::RichEditableTextContainerManager/keyDownHandler()[/Users/aharui/release4.13.0/frameworks/projects/spark/src/spark/components/supportClasses/RichEditableTextContainerManager.as:665]
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to