Bug 15134 - Assertion failure in WebCore::AppendNodeCommand::doApply() while editing <ul>
Summary: Assertion failure in WebCore::AppendNodeCommand::doApply() while editing <ul>
Status: RESOLVED WORKSFORME
Alias: None
Product: WebKit
Classification: Unclassified
Component: HTML Editing (show other bugs)
Version: 523.x (Safari 3)
Hardware: All All
: P2 Normal
Assignee: Nobody
URL: data:text/html,<ul contenteditable="t...
Keywords: HasReduction, InRadar
Depends on:
Blocks:
 
Reported: 2007-09-02 15:48 PDT by Matt Lilek
Modified: 2012-06-03 00:19 PDT (History)
1 user (show)

See Also:


Attachments
Testcase (387 bytes, text/html)
2007-09-02 16:43 PDT, Matt Lilek
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Matt Lilek 2007-09-02 15:48:35 PDT
Load the HTML snippet at the URL and focus it.  Enter a couple lines, then backspace to delete what you've just entered.  When everything is erased, hit backspace once more and you'll hit this assert:

This asserts on both Tiger (10.4.10, 8R218) and Windows XP with r25436 with Safari 3.0.3 Public Beta.  In a release build, this deletes the <ul>.

ASSERTION FAILED: isContentEditable(m_parentNode.get()) || enclosingNodeOfType(m_parentNode.get(), &isContentEditable) || !m_parentNode->attached()
(WebKit/WebCore/editing/AppendNodeCommand.cpp:46 virtual void WebCore::AppendNodeCommand::doApply())

Thread 0 Crashed:
0   com.apple.WebCore        	0x01213934 WebCore::AppendNodeCommand::doApply() + 508
1   com.apple.WebCore        	0x01229884 WebCore::EditCommand::apply() + 496 (EditCommand.cpp:92)
2   com.apple.WebCore        	0x0121e1fc WebCore::CompositeEditCommand::applyCommandToComposite(WTF::PassRefPtr<WebCore::EditCommand>) + 72 (CompositeEditCommand.cpp:97)
3   com.apple.WebCore        	0x0121e720 WebCore::CompositeEditCommand::appendNode(WebCore::Node*, WebCore::Node*) + 208 (CompositeEditCommand.cpp:172)
4   com.apple.WebCore        	0x0121e824 WebCore::CompositeEditCommand::insertNodeAfter(WebCore::Node*, WebCore::Node*) + 216 (CompositeEditCommand.cpp:135)
5   com.apple.WebCore        	0x012208d0 WebCore::CompositeEditCommand::breakOutOfEmptyListItem() + 592 (CompositeEditCommand.cpp:820)
6   com.apple.WebCore        	0x01253778 WebCore::TypingCommand::deleteKeyPressed(WebCore::TextGranularity) + 412 (TypingCommand.cpp:363)
7   com.apple.WebCore        	0x01254b50 WebCore::TypingCommand::deleteKeyPressed(WebCore::Document*, bool, WebCore::TextGranularity) + 240 (TypingCommand.cpp:69)
8   com.apple.WebCore        	0x0145c308 WebCore::Editor::deleteRange(WebCore::Range*, bool, bool, bool, WebCore::EditorDeleteAction, WebCore::TextGranularity) + 428 (Editor.cpp:254)
9   com.apple.WebCore        	0x0145c744 WebCore::Editor::deleteWithDirection(WebCore::SelectionController::EDirection, WebCore::TextGranularity, bool, bool) + 656 (Editor.cpp:315)
10  com.apple.WebKit         	0x0035b188 -[WebHTMLView deleteBackward:] + 240 (WebHTMLView.mm:4359)
11  com.apple.WebKit         	0x0036a18c -[WebHTMLView(WebNSTextInputSupport) doCommandBySelector:] + 1164 (WebHTMLView.mm:5636)
12  com.apple.WebKit         	0x00369c58 -[WebHTMLView(WebInternal) _interceptEditingKeyEvent:shouldSaveCommand:] + 780 (WebHTMLView.mm:5279)
13  com.apple.WebKit         	0x003c2d74 WebEditorClient::handleKeypress(WebCore::KeyboardEvent*) + 228 (WebEditorClient.mm:437)
14  com.apple.WebCore        	0x01457e5c WebCore::Editor::handleKeypress(WebCore::KeyboardEvent*) + 164 (Editor.cpp:115)
15  com.apple.WebCore        	0x014c1d40 WebCore::EventHandler::defaultKeyboardEventHandler(WebCore::KeyboardEvent*) + 112 (EventHandler.cpp:1489)
16  com.apple.WebCore        	0x0128f120 WebCore::EventTargetNode::defaultEventHandler(WebCore::Event*) + 308 (EventTargetNode.cpp:593)
17  com.apple.WebCore        	0x0128e150 WebCore::EventTargetNode::dispatchGenericEvent(WTF::PassRefPtr<WebCore::Event>, int&, bool) + 2632 (EventTargetNode.cpp:266)
18  com.apple.WebCore        	0x0128e7cc WebCore::EventTargetNode::dispatchEvent(WTF::PassRefPtr<WebCore::Event>, int&, bool, WebCore::EventTarget*) + 396 (EventTargetNode.cpp:308)
19  com.apple.WebCore        	0x0128e860 WebCore::EventTargetNode::dispatchEvent(WTF::PassRefPtr<WebCore::Event>, int&, bool) + 80 (EventTargetNode.cpp:292)
20  com.apple.WebCore        	0x014c52ec WebCore::EventHandler::keyEvent(WebCore::PlatformKeyboardEvent const&) + 800 (EventHandler.cpp:1480)
21  com.apple.WebCore        	0x014bdd68 WebCore::EventHandler::keyEvent(NSEvent*) + 520 (EventHandlerMac.mm:141)
22  com.apple.WebKit         	0x00356670 -[WebHTMLView keyDown:] + 360 (WebHTMLView.mm:3577)
23  com.apple.AppKit         	0x937d9fa0 -[NSWindow sendEvent:] + 6424
Comment 1 Matt Lilek 2007-09-02 16:42:51 PDT
This might be P1 material.

In the attached testcase, there's a contenteditable list.  Pasting something into it that contains new lines then hitting enter twice to create a new list item hits this assert in a debug build, but in a release build it deletes the item.
Comment 2 Matt Lilek 2007-09-02 16:43:11 PDT
Created attachment 16183 [details]
Testcase
Comment 3 Mark Rowe (bdash) 2007-09-02 17:30:36 PDT
<rdar://problem/5456956>
Comment 4 Ryosuke Niwa 2012-06-03 00:19:08 PDT
I can't reproduce this assertion failure anymore.