Bug 25050 - [Qt] Crash when dragging and dropping WebKit icon from firefox into editable Qt WebView
Summary: [Qt] Crash when dragging and dropping WebKit icon from firefox into editable ...
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKit Qt (show other bugs)
Version: 528+ (Nightly build)
Hardware: Mac OS X 10.5
: P2 Normal
Assignee: Nobody
URL: https://www.webkit.org/
Depends on:
Reported: 2009-04-04 15:24 PDT by Erik L. Bunce
Modified: 2009-04-05 10:26 PDT (History)
1 user (show)

See Also:

Fix an assert failure when dropping an 'empty' text/uri-list on a QWebView. (1.29 KB, patch)
2009-04-04 20:45 PDT, Erik L. Bunce
hausmann: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Erik L. Bunce 2009-04-04 15:24:17 PDT
I get a crash when dragging and dropping WebKit icon from firefox into editable Qt WebView.  This was with Qt WebKit from SVN trunk r42167.

Steps to reproduce (on Mac OS 10.5.6):
1) Bring up http:/www.webkit.org/ in Firefox 3.0.8.
2) Launch an app using Qt WebView 
3) Get an editable frame, for example, using QtLauncher, enable editing by checking "Set Editable" from the "Edit" menu
4) Start a drag of the WebKit icon from the top-left of the http://www.webkit.org page, and drop it into the editable QWebView.
5) Receive the following crash:

ASSERT: "!isEmpty()" in file /usr/local/Trolltech/Qt-4.5.0/lib/QtCore.framework/Versions/4/Headers/qlist.h, line 252

Program received signal SIGABRT, Aborted.
0x94e5ce42 in __kill ()
(gdb) bt
#0  0x94e5ce42 in __kill ()
#1  0x94e5ce34 in kill$UNIX2003 ()
#2  0x94ecf23a in raise ()
#3  0x94edb679 in abort ()
#4  0x0027b3b5 in qt_message_output ()
#5  0x0027b4a9 in qFatal ()
#6  0x0027b5b0 in qt_assert ()
#7  0x04836188 in QList<QUrl>::first (this=0xbfffdac4) at qlist.h:252
#8  0x04835a2f in WebCore::DragData::asURL (this=0xbfffde78, title=0x0) at ../../../WebCore/platform/qt/DragDataQt.cpp:129
#9  0x04835b76 in WebCore::DragData::asPlainText (this=0xbfffde78) at ../../../WebCore/platform/qt/DragDataQt.cpp:95
#10 0x04607a45 in documentFragmentFromDragData (dragData=0xbfffde78, context=@0xbfffdcb0, allowPlainText=true, chosePlainText=@0xbfffdc6b) at ../../../WebCore/page/DragController.cpp:123
#11 0x0460a371 in WebCore::DragController::concludeEditDrag (this=0x587ad0, dragData=0xbfffde78) at ../../../WebCore/page/DragController.cpp:396
#12 0x0460aee8 in WebCore::DragController::performDrag (this=0x587ad0, dragData=0xbfffde78) at ../../../WebCore/page/DragController.cpp:192
#13 0x0486365e in QWebPagePrivate::dropEvent (this=0x587560, ev=0xbfffe438) at ../../../WebKit/qt/Api/qwebpage.cpp:892
#14 0x0486aa71 in QWebPage::event (this=0x587250, ev=0xbfffe438) at ../../../WebKit/qt/Api/qwebpage.cpp:2070
#15 0x0486df12 in QWebView::dropEvent (this=0x570f60, ev=0xbfffe438) at ../../../WebKit/qt/Api/qwebview.cpp:850
#16 0x000141c5 in WebView::dropEvent (this=0x570f60, event=0xbfffe438) at HtmlEditMainWindow.cpp:180
#17 0x00b815ca in QWidget::event ()
#18 0x0486d88c in QWebView::event (this=0x570f60, e=0xbfffe438) at ../../../WebKit/qt/Api/qwebview.cpp:589
#19 0x00b3538f in QApplicationPrivate::notify_helper ()
#20 0x00b3c629 in QApplication::notify ()
#21 0x00374ab2 in QCoreApplication::notifyInternal ()
#22 0x00ac3c9a in QWidgetPrivate::qt_mac_dnd_event ()
#23 0x00ad8756 in QWidgetPrivate::qt_widget_event ()
#24 0x93049143 in DispatchEventToHandlers ()
#25 0x9304857d in SendEventToEventTargetInternal ()
#26 0x930483e2 in SendEventToEventTargetWithOptions ()
#27 0x931cf520 in SendControlDefDragReceive ()
#28 0x931cf422 in ControlDragReceiveHandler ()
#29 0x931cf397 in CarbonReceiveMapper ()
#30 0x94d421b0 in DoDropMessage ()
#31 0x94d41c11 in CoreDragMessageHandler ()
#32 0x93fe8d21 in __CFMessagePortPerform ()
#33 0x9400a8e8 in CFRunLoopRunSpecific ()
#34 0x9400acd8 in CFRunLoopRunInMode ()
#35 0x00ade0b0 in QEventDispatcherMac::processEvents ()
#36 0x00374061 in QEventLoop::processEvents ()
#37 0x0037420d in QEventLoop::exec ()
#38 0x0037806e in QCoreApplication::exec ()
#39 0x000146e3 in main (argc=1, argv=0xbffff49c) at main.cpp:68

For some reason the platform drag data returns an empty list of urls, which DragData::asUrl() is attempting to return the first() entry of without checking that it exists.
Comment 1 Erik L. Bunce 2009-04-04 20:45:37 PDT
Created attachment 29260 [details]
Fix an assert failure when dropping an 'empty' text/uri-list on a QWebView.
Comment 2 Simon Hausmann 2009-04-05 10:26:48 PDT
Thanks! landed in r42234