Dragging an image in ToT on Windows fails the following ASSERT in UString::Rep::createCopying: JSLock::lockCount() > 0 <http://trac.webkit.org/projects/webkit/browser/trunk/JavaScriptCore/kjs/ustring.cpp#L175> > WebKit.dll!KJS::UString::Rep::createCopying(const KJS::UChar * d=0x03f2a4e0, int l=77) Line 175 + 0x25 bytes C++ WebKit.dll!KJS::UString::UString(const KJS::UChar * c=0x03f2a4e0, int length=77) Line 442 + 0x11 bytes C++ WebKit.dll!WebCore::String::operator KJS::UString() Line 644 + 0x28 bytes C++ WebKit.dll!WebCore::KURL::operator KJS::UString() Line 140 + 0x23 bytes C++ WebKit.dll!WebCore::ClipboardWin::declareAndWriteDragImage(WebCore::Element * element=0x029b03f8, const WebCore::KURL & url={...}, const WebCore::String & title={...}, WebCore::Frame * frame=0x01e1b4f0) Line 677 + 0x34 bytes C++ WebKit.dll!WebCore::prepareClipboardForImageDrag(WebCore::Frame * src=0x01e1b4f0, WebCore::Clipboard * clipboard=0x0269c410, WebCore::Element * node=0x029b03f8, const WebCore::KURL & linkURL={...}, const WebCore::KURL & imageURL={...}, const WebCore::String & label={...}) Line 558 + 0x42 bytes C++ WebKit.dll!WebCore::DragController::startDrag(WebCore::Frame * src=0x01e1b4f0, WebCore::Clipboard * clipboard=0x0269c410, WebCore::DragOperation srcOp=DragOperationNone, const WebCore::PlatformMouseEvent & dragEvent={...}, const WebCore::IntPoint & dragOrigin={...}, bool isDHTMLDrag=false) Line 635 + 0x2f bytes C++ WebKit.dll!WebCore::EventHandler::handleDrag(const WebCore::MouseEventWithHitTestResults & event={...}) Line 1755 + 0x44 bytes C++ WebKit.dll!WebCore::EventHandler::handleMouseDraggedEvent(const WebCore::MouseEventWithHitTestResults & event={...}) Line 353 + 0xc bytes C++ WebKit.dll!WebCore::EventHandler::handleMouseMoveEvent(const WebCore::PlatformMouseEvent & mouseEvent={...}, WebCore::HitTestResult * hoveredNode=0x0012f7a4) Line 1034 + 0xc bytes C++ WebKit.dll!WebCore::EventHandler::mouseMoved(const WebCore::PlatformMouseEvent & event={...}) Line 938 + 0x10 bytes C++ WebKit.dll!WebView::handleMouseEvent(unsigned int message=512, unsigned int wParam=1, long lParam=11534604) Line 1216 + 0x1d bytes C++ WebKit.dll!WebViewWndProc(HWND__ * hWnd=0x00050112, unsigned int message=512, unsigned int wParam=1, long lParam=11534604) Line 1634 + 0x14 bytes C++ user32.dll!7e418724() [Frames below may be incorrect and/or missing, no symbols loaded for user32.dll]
Created attachment 19185 [details] proposed fix (untested) As usual, my Windows build is far from completion, but this should fix the issue. I'm curious why KURL has such a preference for UString.
Comment on attachment 19185 [details] proposed fix (untested) r=me The implicit conversion from KURL to UString is a bad idea. I suggest we either remove it or if we decide it's too valuable to remove, add an implicit conversion to String.
Committed revision 30369.