Summary: | editing/pasteboard/copy-paste-bidi intermittently fails due to disappearance of anonymous RenderBlock | ||||||
---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Adam Roben (:aroben) <aroben> | ||||
Component: | Tools / Tests | Assignee: | Nobody <webkit-unassigned> | ||||
Status: | RESOLVED FIXED | ||||||
Severity: | Normal | CC: | ap, aroben, hyatt, justin.garcia, mitz, timothy | ||||
Priority: | P2 | Keywords: | LayoutTestFailure | ||||
Version: | 420+ | ||||||
Hardware: | Mac | ||||||
OS: | OS X 10.4 | ||||||
URL: | http://build.webkit.org/results/post-commit-powerpc-mac-os-x/3925/editing/pasteboard/copy-paste-bidi-diffs.txt | ||||||
Attachments: |
|
Description
Adam Roben (:aroben)
2006-10-19 11:44:41 PDT
I discovered that the undeterminism enters in ReplaceSelectionCommand::removeRedundantStyles(). The iteration order over the NodeStyleMap (in the for loop) isn't the same in every run (despite the order of traversal in the while loop that fills up the map being deterministic, of course). You can probably simply replace the map with two vectors and iterate them simultaneously, to ensure deterministic order. However, you can also consider the current results as indicating two bugs in the rendering code: (a) leftover empty anonymous block(s) and (b) the final render tree depends on the order of operations. Nice detective work, Mitz. I'm CCing hyatt to get his input on this. Created attachment 11185 [details]
Test case showing how empty anonymous blocks can be left behind
This test shows how the render tree can end up with empty anonymous blocks (in the failing layout test, the span is a temporary "Apple style span").
|