<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>113434</bug_id>
          
          <creation_ts>2013-03-27 12:43:14 -0700</creation_ts>
          <short_desc>Crash when calling QWebFrame::evaluateJavaScript</short_desc>
          <delta_ts>2013-05-08 02:31:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt</keywords>
          <priority>P1</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>88186</blocked>
    
    <blocked>110211</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Stephen">sfcheng</reporter>
          <assigned_to name="Allan Sandfeld Jensen">allan.jensen</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>hausmann</cc>
    
    <cc>jturcotte</cc>
    
    <cc>sfcheng</cc>
    
    <cc>wingzx3</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>864787</commentid>
    <comment_count>0</comment_count>
    <who name="Stephen">sfcheng</who>
    <bug_when>2013-03-27 12:43:14 -0700</bug_when>
    <thetext>In Qt 5.0.1, when I use QWebFrame::evaluateJavaScript to execute some script within a QWebFrame, it&apos;s very likely to crash at the same place in MarkedAllocator.cpp.


void* MarkedAllocator::allocateSlowCase(size_t bytes)
{
    ASSERT(m_heap-&gt;globalData()-&gt;apiLock().currentThreadIsHoldingLock());
#if COLLECT_ON_EVERY_ALLOCATION
    m_heap-&gt;collectAllGarbage();
    ASSERT(m_heap-&gt;m_operationInProgress == NoOperation);
#endif
...

}

The debug assertion  ASSERT(m_heap-&gt;globalData()-&gt;apiLock().currentThreadIsHoldingLock()) was fired right after the entrance of this function. 

I did find a similar bug with the blackberry port that&apos;s already resolved here: https://bugs.webkit.org/show_bug.cgi?id=100504 . I added the following line &quot;JSC::JSLockHolder lock(exec)&quot; into QVariant QWebFrameAdapter::evaluateJavaScript(const QString &amp;scriptSource) in QWebFrameAdapter.cpp:

QVariant QWebFrameAdapter::evaluateJavaScript(const QString &amp;scriptSource)
{
    ScriptController* proxy = frame-&gt;script();
    QVariant rc;
    if (proxy) {
        int distance = 0;
        JSC::JSValue v = frame-&gt;script()-&gt;executeScript(ScriptSourceCode(scriptSource)).jsValue();
        JSC::ExecState* exec = proxy-&gt;globalObject(mainThreadNormalWorld())-&gt;globalExec();
        JSC::JSLockHolder lock(exec);    //This line fixes the bug.
        JSValueRef* ignoredException = 0;
        rc = JSC::Bindings::convertValueToQVariant(toRef(exec), toRef(exec, v), QMetaType::Void, &amp;distance, ignoredException);
    }
    return rc;
}

It seems to work and stops the crash. However, I am not an inside developer and don&apos;t really know what I am doing. Can someone look into this bug and provide a real fix?

This is a serious bug since it will crash any applications who attempts to run their own scripts within web pages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881330</commentid>
    <comment_count>1</comment_count>
    <who name="Henry">wingzx3</who>
    <bug_when>2013-04-25 10:11:17 -0700</bug_when>
    <thetext>I can confirm this happens also on the 5.0.2 version of qtwebkit.  You can easily trigger the bug by using page with frames and running the evalulateJavascript function at the beginning of those frames loads.  I&apos;ll put together a testcase when I have extra time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881859</commentid>
    <comment_count>2</comment_count>
      <attachid>199825</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-04-26 06:39:23 -0700</bug_when>
    <thetext>Created attachment 199825
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882489</commentid>
    <comment_count>3</comment_count>
      <attachid>199825</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-04-29 00:30:40 -0700</bug_when>
    <thetext>Comment on attachment 199825
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=199825&amp;action=review

&gt; Source/WebKit/qt/Api/qwebelement.cpp:765
&gt; +    JSC::JSLockHolder lock(state);
&gt;      JSValueRef* ignoredException = 0;
&gt;      return JSC::Bindings::convertValueToQVariant(toRef(state), toRef(state, evaluationResult), QMetaType::Void, &amp;distance, ignoredException);

Would there be issues if you put the lock inside convertValueToQVariant?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883023</commentid>
    <comment_count>4</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-04-30 05:22:43 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 199825 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=199825&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/qt/Api/qwebelement.cpp:765
&gt; &gt; +    JSC::JSLockHolder lock(state);
&gt; &gt;      JSValueRef* ignoredException = 0;
&gt; &gt;      return JSC::Bindings::convertValueToQVariant(toRef(state), toRef(state, evaluationResult), QMetaType::Void, &amp;distance, ignoredException);
&gt; 
&gt; Would there be issues if you put the lock inside convertValueToQVariant?

It would somehow have to be certain to be in the outer most function because convertValueToQVariant is called recursively.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883769</commentid>
    <comment_count>5</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-05-02 06:07:58 -0700</bug_when>
    <thetext>Closer investigation tells me convertValueToQVariant should do the locking, but on a much finer grained basis. We already do locking automatically everywhere the JSAPI is used. The problem must be the few places we use methods not provided by the JSAPI , and do not first lock JSC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883771</commentid>
    <comment_count>6</comment_count>
      <attachid>200310</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-05-02 06:24:35 -0700</bug_when>
    <thetext>Created attachment 200310
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883772</commentid>
    <comment_count>7</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-05-02 06:26:32 -0700</bug_when>
    <thetext>Btw, the assert is almost impossible to trigger on 64bit, but would probably happen reliably on 32bit in any JSC::toRef call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884108</commentid>
    <comment_count>8</comment_count>
      <attachid>200310</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-03 02:33:42 -0700</bug_when>
    <thetext>Comment on attachment 200310
Patch

Clearing flags on attachment: 200310

Committed r149521: &lt;http://trac.webkit.org/changeset/149521&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884109</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-03 02:33:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884477</commentid>
    <comment_count>10</comment_count>
    <who name="Stephen">sfcheng</who>
    <bug_when>2013-05-03 21:20:29 -0700</bug_when>
    <thetext>Unfortunately, when I apply the 2nd patch on the source of qt 5.0.2, the crash continues to happen. I set breakpoints in the patched locations inside qt_runtime.cpp but my application doesn&apos;t run through those points.

The first patch works fine for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884516</commentid>
    <comment_count>11</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-05-04 02:34:56 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Unfortunately, when I apply the 2nd patch on the source of qt 5.0.2, the crash continues to happen. I set breakpoints in the patched locations inside qt_runtime.cpp but my application doesn&apos;t run through those points.
&gt; 
&gt; The first patch works fine for me.

Do you have a backtrace of where the assertion is triggered?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884711</commentid>
    <comment_count>12</comment_count>
    <who name="Stephen">sfcheng</who>
    <bug_when>2013-05-05 07:25:53 -0700</bug_when>
    <thetext>Here is the stack trace. Basically, I was executing my own custom script right before starting a new navigation (inside QWebPage::acceptNavigationRequest).



 	ntdll.dll!_ZwRaiseException@12()  + 0x12 bytes	
 	ntdll.dll!_ZwRaiseException@12()  + 0x12 bytes	
&gt;	Qt5WebKitd.dll!JSC::MarkedAllocator::allocateSlowCase(unsigned int bytes=16)  Line 73 + 0x43 bytes	C++
 	Qt5WebKitd.dll!JSC::MarkedAllocator::allocate(unsigned int bytes=16)  Line 78 + 0xc bytes	C++
 	Qt5WebKitd.dll!JSC::MarkedSpace::allocateWithoutDestructor(unsigned int bytes=16)  Line 211	C++
 	Qt5WebKitd.dll!JSC::Heap::allocateWithoutDestructor(unsigned int bytes=16)  Line 415	C++
 	Qt5WebKitd.dll!JSC::allocateCell&lt;JSC::JSAPIValueWrapper&gt;(JSC::Heap &amp; heap={...}, unsigned int size=16)  Line 320 + 0xc bytes	C++
 	Qt5WebKitd.dll!JSC::allocateCell&lt;JSC::JSAPIValueWrapper&gt;(JSC::Heap &amp; heap={...})  Line 328 + 0xb bytes	C++
 	Qt5WebKitd.dll!JSC::JSAPIValueWrapper::create(JSC::ExecState * exec=0x0cdff7a8, JSC::JSValue value={...})  Line 49 + 0xe bytes	C++
 	Qt5WebKitd.dll!JSC::jsAPIValueWrapper(JSC::ExecState * exec=0x0cdff7a8, JSC::JSValue value={...})  Line 73 + 0x11 bytes	C++
 	Qt5WebKitd.dll!toRef(JSC::ExecState * exec=0x0cdff7a8, JSC::JSValue v={...})  Line 114 + 0x15 bytes	C++
 	Qt5WebKitd.dll!QWebFrameAdapter::evaluateJavaScript(const QString &amp; scriptSource={...})  Line 206 + 0x1b bytes	C++
 	Qt5WebKitWidgetsd.dll!QWebFrame::evaluateJavaScript(const QString &amp; scriptSource={...})  Line 913 + 0x14 bytes	C++
 	MyApp.exe!WebView::execScriptInFrame(const QString &amp; sScriptCode={...}, QWebFrame * pFrame=0x0b76d470, bool bIncludeChildren=false)  Line 323 + 0x26 bytes	C++
 	MyApp.exe!WebView::execScript(QString sScriptCode={...}, WebView::enmExecuteScriptFrameType eFlags=ES_SPECFRAME, QVariant * pvResult=type = ..., QWebFrame * 
 	MyApp.exe!WebPage::acceptNavigationRequest(QWebFrame * frame=0x13000f98, const QNetworkRequest &amp; request={...}, QWebPage::NavigationType type=NavigationTypeOther)  Line 326	C++
 	Qt5WebKitWidgetsd.dll!QWebPagePrivate::acceptNavigationRequest(QWebFrameAdapter * frameAdapter=0x138275b8, const QNetworkRequest &amp; request={...}, int type=5)  Line 381	C++
 	Qt5WebKitd.dll!WebCore::FrameLoaderClientQt::dispatchDecidePolicyForNavigationAction(void (WebCore::PolicyAction)* function=0x03b0e380, const WebCore::NavigationAction &amp; action={...}, const WebCore::ResourceRequest &amp; request={...}, WTF::PassRefPtr&lt;WebCore::FormState&gt; __formal={...})  Line 1271 + 0x3b bytes	C++
 	Qt5WebKitd.dll!WebCore::PolicyChecker::checkNavigationPolicy(const WebCore::ResourceRequest &amp; request={...}, WebCore::DocumentLoader * loader=0x139278b8, WTF::PassRefPtr&lt;WebCore::FormState&gt; formState={...}, void (void *, const WebCore::ResourceRequest &amp;, WTF::PassRefPtr&lt;WebCore::FormState&gt;, bool)* function=0x0356b750, void * argument=0x1366c698)  Line 90	C++
 	Qt5WebKitd.dll!WebCore::FrameLoader::loadWithDocumentLoader(WebCore::DocumentLoader * loader=0x139278b8, WebCore::FrameLoadType type=FrameLoadTypeRedirectWithLockedBackForwardList, WTF::PassRefPtr&lt;WebCore::FormState&gt; prpFormState={...})  Line 1395	C++
 	Qt5WebKitd.dll!WebCore::FrameLoader::loadWithNavigationAction(const WebCore::ResourceRequest &amp; request={...}, const WebCore::NavigationAction &amp; action={...}, bool lockHistory=false, WebCore::FrameLoadType type=FrameLoadTypeRedirectWithLockedBackForwardList, WTF::PassRefPtr&lt;WebCore::FormState&gt; formState={...})  Line 1298	C++
 	Qt5WebKitd.dll!WebCore::FrameLoader::loadURL(const WebCore::KURL &amp; newURL={...}, const WTF::String &amp; referrer={...}, const WTF::String &amp; frameName={...}, bool lockHistory=false, WebCore::FrameLoadType newLoadType=FrameLoadTypeRedirectWithLockedBackForwardList, WTF::PassRefPtr&lt;WebCore::Event&gt; event={...}, WTF::PassRefPtr&lt;WebCore::FormState&gt; prpFormState={...})  Line 1233	C++
 	Qt5WebKitd.dll!WebCore::FrameLoader::loadFrameRequest(const WebCore::FrameLoadRequest &amp; request={...}, bool lockHistory=false, bool lockBackForwardList=true, WTF::PassRefPtr&lt;WebCore::Event&gt; event={...}, WTF::PassRefPtr&lt;WebCore::FormState&gt; formState={...}, WebCore::ShouldSendReferrer shouldSendReferrer=MaybeSendReferrer)  Line 1166	C++
 	Qt5WebKitd.dll!WebCore::FrameLoader::urlSelected(const WebCore::FrameLoadRequest &amp; passedRequest={...}, WTF::PassRefPtr&lt;WebCore::Event&gt; triggeringEvent={...}, bool lockHistory=false, bool lockBackForwardList=true, WebCore::ShouldSendReferrer shouldSendReferrer=MaybeSendReferrer, WebCore::ShouldReplaceDocumentIfJavaScriptURL shouldReplaceDocumentIfJavaScriptURL=ReplaceDocumentIfJavaScriptURL)  Line 318	C++
 	Qt5WebKitd.dll!WebCore::FrameLoader::changeLocation(WebCore::SecurityOrigin * securityOrigin=0x0edfec88, const WebCore::KURL &amp; url={...}, const WTF::String &amp; referrer={...}, bool lockHistory=false, bool lockBackForwardList=true, bool refresh=false)  Line 286 + 0x69 bytes	C++
 	Qt5WebKitd.dll!WebCore::ScheduledURLNavigation::fire(WebCore::Frame * frame=0x1366c648)  Line 109 + 0x4e bytes	C++
 	Qt5WebKitd.dll!WebCore::NavigationScheduler::timerFired(WebCore::Timer&lt;WebCore::NavigationScheduler&gt; * __formal=0x1366c968)  Line 419	C++
 	Qt5WebKitd.dll!WebCore::Timer&lt;WebCore::RenderProgress&gt;::fired()  Line 106 + 0x19 bytes	C++
 	Qt5WebKitd.dll!WebCore::ThreadTimers::sharedTimerFiredInternal()  Line 119	C++
 	Qt5WebKitd.dll!WebCore::ThreadTimers::sharedTimerFired()  Line 94	C++
 	Qt5WebKitd.dll!WebCore::SharedTimerQt::timerEvent(QTimerEvent * ev=0x00d8cd60)  Line 114	C++
 	Qt5Cored.dll!QObject::event(QEvent * e=0x00d8cd60)  Line 1052	C++
 	Qt5Widgetsd.dll!QApplicationPrivate::notify_helper(QObject * receiver=0x0d712400, QEvent * e=0x00d8cd60)  Line 3398 + 0x11 bytes	C++
 	Qt5Widgetsd.dll!QApplication::notify(QObject * receiver=0x0d712400, QEvent * e=0x00d8cd60)  Line 2829 + 0x10 bytes	C++
 	Qt5Cored.dll!QCoreApplication::notifyInternal(QObject * receiver=0x0d712400, QEvent * event=0x00d8cd60)  Line 767 + 0x15 bytes	C++
 	Qt5Cored.dll!QCoreApplication::sendEvent(QObject * receiver=0x0d712400, QEvent * event=0x00d8cd60)  Line 203 + 0x39 bytes	C++
 	Qt5Cored.dll!QEventDispatcherWin32::event(QEvent * e=0x137daad8)  Line 1107 + 0x10 bytes	C++
 	Qt5Widgetsd.dll!QApplicationPrivate::notify_helper(QObject * receiver=0x0b89f310, QEvent * e=0x137daad8)  Line 3398 + 0x11 bytes	C++
 	Qt5Widgetsd.dll!QApplication::notify(QObject * receiver=0x0b89f310, QEvent * e=0x137daad8)  Line 2829 + 0x10 bytes	C++
 	Qt5Cored.dll!QCoreApplication::notifyInternal(QObject * receiver=0x0b89f310, QEvent * event=0x137daad8)  Line 767 + 0x15 bytes	C++
 	Qt5Cored.dll!QCoreApplication::sendEvent(QObject * receiver=0x0b89f310, QEvent * event=0x137daad8)  Line 203 + 0x39 bytes	C++
 	Qt5Cored.dll!QCoreApplicationPrivate::sendPostedEvents(QObject * receiver=0x00000000, int event_type=0, QThreadData * data=0x0b89db88)  Line 1368 + 0x12 bytes	C++
 	Qt5Cored.dll!QCoreApplication::sendPostedEvents(QObject * receiver=0x00000000, int event_type=0)  Line 1228 + 0x11 bytes	C++
 	Qt5Guid.dll!QWindowSystemInterface::sendWindowSystemEvents(QFlags&lt;enum QEventLoop::ProcessEventsFlag&gt; flags={...})  Line 515 + 0xa bytes	C++
 	qwindowsd.dll!QWindowsGuiEventDispatcher::sendPostedEvents()  Line 86 + 0xd bytes	C++
 	Qt5Cored.dll!qt_internal_proc(HWND__ * hwnd=0x002f088a, unsigned int message=1025, unsigned int wp=0, long lp=0)  Line 423	C++
 	user32.dll!_InternalCallWinProc@20()  + 0x23 bytes	
 	user32.dll!_UserCallWinProcCheckWow@32()  + 0xb7 bytes	
 	user32.dll!_DispatchMessageWorker@8()  + 0xed bytes	
 	user32.dll!_DispatchMessageW@4()  + 0xf bytes	
 	Qt5Cored.dll!QEventDispatcherWin32::processEvents(QFlags&lt;enum QEventLoop::ProcessEventsFlag&gt; flags={...})  Line 744	C++
 	qwindowsd.dll!QWindowsGuiEventDispatcher::processEvents(QFlags&lt;enum QEventLoop::ProcessEventsFlag&gt; flags={...})  Line 78 + 0xd bytes	C++
 	Qt5Cored.dll!QEventLoop::processEvents(QFlags&lt;enum QEventLoop::ProcessEventsFlag&gt; flags={...})  Line 137	C++
 	Qt5Cored.dll!QEventLoop::exec(QFlags&lt;enum QEventLoop::ProcessEventsFlag&gt; flags={...})  Line 212 + 0x26 bytes	C++
 	Qt5Cored.dll!QCoreApplication::exec()  Line 1020 + 0x15 bytes	C++
 	Qt5Guid.dll!QGuiApplication::exec()  Line 1184	C++
 	Qt5Widgetsd.dll!QApplication::exec()  Line 2674	C++
 	MyApp.exe!main(int argc=1, char * * argv=0x0b765c10)  Line 94 + 0x6 bytes	C++
 	MyApp.exe!WinMain(HINSTANCE__ * instance=0x00240000, HINSTANCE__ * prevInstance=0x00000000, char * __formal=0x011d5742, int cmdShow=10)  Line 131 + 0x12 bytes	C++
 	MyApp.exe!__tmainCRTStartup()  Line 547 + 0x2c bytes	C
 	MyApp.exe!WinMainCRTStartup()  Line 371	C
 	kernel32.dll!@BaseThreadInitThunk@12()  + 0x12 bytes	
 	ntdll.dll!___RtlUserThreadStart@8()  + 0x27 bytes	
 	ntdll.dll!__RtlUserThreadStart@8()  + 0x1b bytes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884712</commentid>
    <comment_count>13</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-05-05 07:38:56 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Here is the stack trace. Basically, I was executing my own custom script right before starting a new navigation (inside QWebPage::acceptNavigationRequest).
&gt; 
Ahh, that explains it. The problem is toRef(exec, v) which requires the lock held.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884713</commentid>
    <comment_count>14</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-05-05 07:48:28 -0700</bug_when>
    <thetext>Reopen since we still have unprotected toRef() calls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885663</commentid>
    <comment_count>15</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-05-07 03:49:01 -0700</bug_when>
    <thetext>We have a really unfortunate mix of JSValue, JSValueRef and WebCore::ScriptValue here, that makes the conversions messy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885680</commentid>
    <comment_count>16</comment_count>
      <attachid>200894</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-05-07 05:29:51 -0700</bug_when>
    <thetext>Created attachment 200894
Patch

Protect conversion of JSValue to JSValueRef</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885735</commentid>
    <comment_count>17</comment_count>
      <attachid>200894</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-07 08:32:15 -0700</bug_when>
    <thetext>Comment on attachment 200894
Patch

Clearing flags on attachment: 200894

Committed r149671: &lt;http://trac.webkit.org/changeset/149671&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885736</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-07 08:32:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885754</commentid>
    <comment_count>19</comment_count>
    <who name="Stephen">sfcheng</who>
    <bug_when>2013-05-07 09:06:14 -0700</bug_when>
    <thetext>Just to make sure, with the new patch, the old patch to qt_runtime.cpp is no longer necessary, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885764</commentid>
    <comment_count>20</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-05-07 09:14:47 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Just to make sure, with the new patch, the old patch to qt_runtime.cpp is no longer necessary, right?

No, they are both necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885809</commentid>
    <comment_count>21</comment_count>
    <who name="Stephen">sfcheng</who>
    <bug_when>2013-05-07 10:31:53 -0700</bug_when>
    <thetext>Then why the previous qt_runtime.cpp patch is marked as &quot;obsolete&quot; among the list of attachments?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886250</commentid>
    <comment_count>22</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-05-08 02:31:34 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; Then why the previous qt_runtime.cpp patch is marked as &quot;obsolete&quot; among the list of attachments?

Only because marking the old patch obsolote is the default behavior of the script I used to upload the patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199825</attachid>
            <date>2013-04-26 06:39:23 -0700</date>
            <delta_ts>2013-05-02 06:24:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113434-20130426153843.patch</filename>
            <type>text/plain</type>
            <size>2449</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5MTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGMzMmJkMGNjOGZi
YzBmZjRiYjlkZWUxYWZhZTVjZDkzZTQ5YTAxNzguLjIzODFkNDI4MzhkY2I0M2FiYjFkMzYxMmZk
ZDNjMzgxNGVhMDcxNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTMtMDQt
MjYgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAg
ICAgICAgQ3Jhc2ggd2hlbiBjYWxsaW5nIFFXZWJGcmFtZTo6ZXZhbHVhdGVKYXZhU2NyaXB0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM0MzQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBuZWVkIHRv
IGFsc28gaG9sZCB0aGUgSlNMb2NrIHdoZW4gY2FsbGluZyBjb252ZXJ0VmFsdWVUb1FWYXJpYW50
LgorICAgICAgICBJdCBpcyBjdXJyZW50bHkgb25seSBoZWxkIGR1cmluZyBldmFsdWF0aW9uLgor
CisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKFFXZWJFbGVtZW50Ojpl
dmFsdWF0ZUphdmFTY3JpcHQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFk
YXB0ZXIuY3BwOgorICAgICAgICAoUVdlYkZyYW1lQWRhcHRlcjo6ZXZhbHVhdGVKYXZhU2NyaXB0
KToKKwogMjAxMy0wNC0yNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IENvbnNvbGVNZXNzYWdlIHNob3VsZCBpbmNsdWRlIGxp
bmUgYW5kIGNvbHVtbiBudW1iZXIgd2hlcmUgcG9zc2libGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvcXQvQXBpL3F3ZWJlbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJl
bGVtZW50LmNwcAppbmRleCAxOTc0ZDRjY2U2Yjg0ZjU5MDQ4MzA0ODc3Y2E5NWM1YTEzMDJjM2Nj
Li4xMDlkMTEyMTg0NmE3NTc2NTZhYjNmMjU0MmZlYTg1ZGRiNzUxNDgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9x
dC9BcGkvcXdlYmVsZW1lbnQuY3BwCkBAIC03NjAsNiArNzYwLDcgQEAgUVZhcmlhbnQgUVdlYkVs
ZW1lbnQ6OmV2YWx1YXRlSmF2YVNjcmlwdChjb25zdCBRU3RyaW5nJiBzY3JpcHRTb3VyY2UpCiAg
ICAgICAgIHJldHVybiBRVmFyaWFudCgpOwogCiAgICAgaW50IGRpc3RhbmNlID0gMDsKKyAgICBK
U0M6OkpTTG9ja0hvbGRlciBsb2NrKHN0YXRlKTsKICAgICBKU1ZhbHVlUmVmKiBpZ25vcmVkRXhj
ZXB0aW9uID0gMDsKICAgICByZXR1cm4gSlNDOjpCaW5kaW5nczo6Y29udmVydFZhbHVlVG9RVmFy
aWFudCh0b1JlZihzdGF0ZSksIHRvUmVmKHN0YXRlLCBldmFsdWF0aW9uUmVzdWx0KSwgUU1ldGFU
eXBlOjpWb2lkLCAmZGlzdGFuY2UsIGlnbm9yZWRFeGNlcHRpb24pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5jcHAKaW5kZXgg
MzkzY2MzNzg5NDU5ZDNiYzJiOWE2NjMxYWE2YjBhYzA2ZGNiNzkzZS4uMDUwOWMwM2JiMmIxODgx
MDBiYjU0YTU5ODg2NWE5YjFlOGZiM2UzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwCkBAIC0yMDMsNiArMjAzLDcgQEAg
UVZhcmlhbnQgUVdlYkZyYW1lQWRhcHRlcjo6ZXZhbHVhdGVKYXZhU2NyaXB0KGNvbnN0IFFTdHJp
bmcgJnNjcmlwdFNvdXJjZSkKICAgICAgICAgaW50IGRpc3RhbmNlID0gMDsKICAgICAgICAgSlND
OjpKU1ZhbHVlIHYgPSBmcmFtZS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHQoU2NyaXB0U291cmNl
Q29kZShzY3JpcHRTb3VyY2UpKS5qc1ZhbHVlKCk7CiAgICAgICAgIEpTQzo6RXhlY1N0YXRlKiBl
eGVjID0gcHJveHktPmdsb2JhbE9iamVjdChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSktPmdsb2Jh
bEV4ZWMoKTsKKyAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICAgICAg
SlNWYWx1ZVJlZiogaWdub3JlZEV4Y2VwdGlvbiA9IDA7CiAgICAgICAgIHJjID0gSlNDOjpCaW5k
aW5nczo6Y29udmVydFZhbHVlVG9RVmFyaWFudCh0b1JlZihleGVjKSwgdG9SZWYoZXhlYywgdiks
IFFNZXRhVHlwZTo6Vm9pZCwgJmRpc3RhbmNlLCBpZ25vcmVkRXhjZXB0aW9uKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200310</attachid>
            <date>2013-05-02 06:24:35 -0700</date>
            <delta_ts>2013-05-08 02:31:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113434-20130502152348.patch</filename>
            <type>text/plain</type>
            <size>4154</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjM0Y2RkZGJlOWY3Y2Qz
YmY3ZWMwNTNkNGY0ZTMzNTFlNzhmNWZhOS4uMjRmNTVkZjNhOGEzOWY2YzU0YTU0ZDJlNzhhYWY3
ZmRjNzUyMWI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEzLTA1LTAyICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIENy
YXNoIHdoZW4gY2FsbGluZyBRV2ViRnJhbWU6OmV2YWx1YXRlSmF2YVNjcmlwdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNDM0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgbXVzdCB0YWtlIHRoZSBK
UyBBUEkgbG9jayBiZWZvcmUgYWNjZXNzaW5nIGludGVybmFsIEpTIG1ldGhvZHMuCisKKyAgICAg
ICAgKiBicmlkZ2UvcXQvcXRfcnVudGltZS5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjp1
bndyYXBCb3hlZFByaW1pdGl2ZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpnZXRHcmVnb3Jp
YW5EYXRlVGltZVVUQyk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpjb252ZXJ0UVZhcmlhbnRU
b1ZhbHVlKToKKwogMjAxMy0wNS0wMSAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29t
PgogCiAgICAgICAgIHRleHQtY29tYmluZTogaG9yaXpvbnRhbCBkb2VzIG5vdCB3b3JrIHByb3Bl
cmx5IGZvciBzb21lIGZvbnRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0
L3F0X3J1bnRpbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3Bw
CmluZGV4IGZiZTc3N2I0NTkzZGVhN2UyZjVkZDllNTM0NDVhNTdiMjAwY2NjMGUuLmQzODI0NjJh
YzMyMDc3MGEzYWQ1MDU0Y2MwZTlmZmI4MDg2MGRmMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cXQvcXRfcnVudGltZS5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJxdF9ydW50aW1l
LmgiCiAKICNpbmNsdWRlICJBUElDYXN0LmgiCisjaW5jbHVkZSAiQVBJU2hpbXMuaCIKICNpbmNs
dWRlICJCb29sZWFuT2JqZWN0LmgiCiAjaW5jbHVkZSAiRGF0ZUluc3RhbmNlLmgiCiAjaW5jbHVk
ZSAiRGF0ZVByb3RvdHlwZS5oIgpAQCAtMTk5LDggKzIwMCw5IEBAIHN0YXRpYyBRU3RyaW5nIHRv
U3RyaW5nKEpTU3RyaW5nUmVmIHN0cmluZ1JlZikKIAogc3RhdGljIEpTVmFsdWVSZWYgdW53cmFw
Qm94ZWRQcmltaXRpdmUoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUsIEpT
T2JqZWN0UmVmIG9iaikKIHsKLSAgICBKU09iamVjdCogb2JqZWN0ID0gdG9KUyhvYmopOwogICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7CisgICAgQVBJRW50cnlTaGltIGVudHJ5
U2hpbShleGVjKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gdG9KUyhvYmopOwogICAgIGlmIChv
YmplY3QtPmluaGVyaXRzKCZOdW1iZXJPYmplY3Q6OnNfaW5mbykpCiAgICAgICAgIHJldHVybiB0
b1JlZihleGVjLCBqc051bWJlcihvYmplY3QtPnRvTnVtYmVyKGV4ZWMpKSk7CiAgICAgaWYgKG9i
amVjdC0+aW5oZXJpdHMoJlN0cmluZ09iamVjdDo6c19pbmZvKSkKQEAgLTI4MSw2ICsyODMsNyBA
QCBzdGF0aWMgUVN0cmluZyB0b1FTdHJpbmcoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVS
ZWYgdmFsdWUpCiBzdGF0aWMgdm9pZCBnZXRHcmVnb3JpYW5EYXRlVGltZVVUQyhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNSZWFsVHlwZSB0eXBlLCBKU1ZhbHVlUmVmIHZhbHVlLCBKU09iamVjdFJl
ZiBvYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbiwgR3JlZ29yaWFuRGF0ZVRpbWUqIGdkdCkK
IHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGNvbnRleHQpOworICAgIEFQSUVudHJ5U2hp
bSBlbnRyeVNoaW0oZXhlYyk7CiAgICAgaWYgKHR5cGUgPT0gRGF0ZSkgewogICAgICAgICBKU09i
amVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CiAgICAgICAgIERhdGVJbnN0YW5jZSogZGF0
ZSA9IGFzRGF0ZUluc3RhbmNlKGpzT2JqZWN0KTsKQEAgLTcyOSw2ICs3MzIsNyBAQCBKU1ZhbHVl
UmVmIGNvbnZlcnRRVmFyaWFudFRvVmFsdWUoSlNDb250ZXh0UmVmIGNvbnRleHQsIFBhc3NSZWZQ
dHI8Um9vdE9iamVjdD4gcgogICAgICAgICBXVEY6OlJlZlB0cjxXVEY6OlVpbnQ4Q2xhbXBlZEFy
cmF5PiB3dGZCeXRlQXJyYXkgPSBXVEY6OlVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRp
YWxpemVkKHF0Qnl0ZUFycmF5Lmxlbmd0aCgpKTsKICAgICAgICAgbWVtY3B5KHd0ZkJ5dGVBcnJh
eS0+ZGF0YSgpLCBxdEJ5dGVBcnJheS5jb25zdERhdGEoKSwgcXRCeXRlQXJyYXkubGVuZ3RoKCkp
OwogICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGNvbnRleHQpOworICAgICAgICBBUElF
bnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOwogICAgICAgICByZXR1cm4gdG9SZWYoZXhlYywgdG9K
UyhleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSksIHd0ZkJ5dGVBcnJheS5nZXQoKSkpOwogICAgIH0KIApAQCAtNzM3LDYgKzc0
MSw3IEBAIEpTVmFsdWVSZWYgY29udmVydFFWYXJpYW50VG9WYWx1ZShKU0NvbnRleHRSZWYgY29u
dGV4dCwgUGFzc1JlZlB0cjxSb290T2JqZWN0PiByCiAgICAgICAgIGlmICghb2JqKQogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVsbChjb250ZXh0KTsKICAgICAgICAgRXhlY1N0YXRl
KiBleGVjID0gdG9KUyhjb250ZXh0KTsKKyAgICAgICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShl
eGVjKTsKICAgICAgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIFF0SW5zdGFuY2U6OmdldFF0SW5zdGFu
Y2Uob2JqLCByb290LCBRdEluc3RhbmNlOjpRdE93bmVyc2hpcCktPmNyZWF0ZVJ1bnRpbWVPYmpl
Y3QoZXhlYykpOwogICAgIH0KIApAQCAtNzUxLDYgKzc1Niw3IEBAIEpTVmFsdWVSZWYgY29udmVy
dFFWYXJpYW50VG9WYWx1ZShKU0NvbnRleHRSZWYgY29udGV4dCwgUGFzc1JlZlB0cjxSb290T2Jq
ZWN0PiByCiAgICAgICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiAgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMo
Y29udGV4dCk7CisgICAgICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CiAgICAgICAg
IHJldHVybiB0b1JlZihleGVjLCBjdXN0b21SdW50aW1lQ29udmVyc2lvbnMoKS0+dmFsdWUodHlw
ZSkudG9KU1ZhbHVlRnVuYyhleGVjLCB0b0pTRE9NR2xvYmFsT2JqZWN0KGRvY3VtZW50LCBleGVj
KSwgdmFyaWFudCkpOwogICAgIH0KIApAQCAtODAwLDYgKzgwNiw3IEBAIEpTVmFsdWVSZWYgY29u
dmVydFFWYXJpYW50VG9WYWx1ZShKU0NvbnRleHRSZWYgY29udGV4dCwgUGFzc1JlZlB0cjxSb290
T2JqZWN0PiByCiAgICAgICAgIFFPYmplY3RMaXN0IG9sID0gdmFyaWFudC52YWx1ZTxRT2JqZWN0
TGlzdD4oKTsKICAgICAgICAgSlNPYmplY3RSZWYgYXJyYXkgPSBKU09iamVjdE1ha2VBcnJheShj
b250ZXh0LCAwLCAwLCBleGNlcHRpb24pOwogICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pT
KGNvbnRleHQpOworICAgICAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOwogICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IG9sLmNvdW50KCk7ICsraSkgewogICAgICAgICAgICAgSlNW
YWx1ZVJlZiBqc09iamVjdCA9IHRvUmVmKGV4ZWMsIFF0SW5zdGFuY2U6OmdldFF0SW5zdGFuY2Uo
b2wuYXQoaSksIHJvb3QsIFF0SW5zdGFuY2U6OlF0T3duZXJzaGlwKS0+Y3JlYXRlUnVudGltZU9i
amVjdChleGVjKSk7CiAgICAgICAgICAgICBKU09iamVjdFNldFByb3BlcnR5QXRJbmRleChjb250
ZXh0LCBhcnJheSwgaSwganNPYmplY3QsIC8qaWdub3JlZCBleGNlcHRpb24qLzApOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200894</attachid>
            <date>2013-05-07 05:29:51 -0700</date>
            <delta_ts>2013-05-07 08:32:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113434-20130507142857.patch</filename>
            <type>text/plain</type>
            <size>5182</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5MDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGI1NzZkMjkyNDZh
NWE1OWZkM2E1MjRmYzc3OWUzOTVjNWYzMjIzNDYuLmQ2MWNhNWNjMDVlYTIzNTBlY2I5ZTkxYTZh
MDhjN2NkMDNiNTE5NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTMtMDUt
MDcgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAg
ICAgICAgQ3Jhc2ggd2hlbiBjYWxsaW5nIFFXZWJGcmFtZTo6ZXZhbHVhdGVKYXZhU2NyaXB0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM0MzQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbnN1cmUgd2Ug
aG9sZCB0aGUgSlNMb2NrIHdoZW4gY29udmVydGluZyBKU1ZhbHVlIHRvIEpTVmFsdWVSZWYuCisK
KyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAoc2V0dXBTY3JpcHRDb250
ZXh0KToKKyAgICAgICAgKFFXZWJFbGVtZW50OjpldmFsdWF0ZUphdmFTY3JpcHQpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwOgorICAgICAgICAoUVdlYkZy
YW1lQWRhcHRlcjo6ZXZhbHVhdGVKYXZhU2NyaXB0KToKKwogMjAxMy0wNC0yMyAgQWxsYW4gU2Fu
ZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdW1dL
MV0gTWVtb3J5Q2FjaGUgaXMgbm90IGNsZWFuZWQgYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkv
cXdlYmVsZW1lbnQuY3BwCmluZGV4IDE5NzRkNGNjZTZiODRmNTkwNDgzMDQ4NzdjYTk1YzVhMTMw
MmMzY2MuLjhiZDg0Njg5YzdhMGQxYTM1ZDQxYmQyODkxNjlhNzEzZjE0MWY2ZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJlbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3F0L0FwaS9xd2ViZWxlbWVudC5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJO
b2RlTGlzdC5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29u
dHJvbGxlci5oIgorI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTY3Jp
cHRTdGF0ZS5oIgogI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiU3R5bGVS
ZXNvbHZlci5oIgpAQCAtNzEwLDcgKzcxMSw3IEBAIFFXZWJGcmFtZSAqUVdlYkVsZW1lbnQ6Ondl
YkZyYW1lKCkgY29uc3QKICAgICByZXR1cm4gZnJhbWVBZGFwdGVyLT5hcGlIYW5kbGUoKTsKIH0K
IAotc3RhdGljIGJvb2wgc2V0dXBTY3JpcHRDb250ZXh0KFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1l
bnQsIEpTQzo6SlNWYWx1ZSYgdGhpc1ZhbHVlLCBTY3JpcHRTdGF0ZSomIHN0YXRlLCBTY3JpcHRD
b250cm9sbGVyKiYgc2NyaXB0Q29udHJvbGxlcikKK3N0YXRpYyBib29sIHNldHVwU2NyaXB0Q29u
dGV4dChXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50LCBTY3JpcHRTdGF0ZSomIHN0YXRlLCBTY3Jp
cHRDb250cm9sbGVyKiYgc2NyaXB0Q29udHJvbGxlcikKIHsKICAgICBpZiAoIWVsZW1lbnQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTczMSwxMCArNzMyLDYgQEAgc3RhdGljIGJvb2wgc2V0
dXBTY3JpcHRDb250ZXh0KFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQsIEpTQzo6SlNWYWx1ZSYg
dGhpc1ZhbHUKICAgICBpZiAoIXN0YXRlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB0
aGlzVmFsdWUgPSB0b0pTKHN0YXRlLCBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBl
KHN0YXRlKSwgZWxlbWVudCk7Ci0gICAgaWYgKCF0aGlzVmFsdWUpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC03NDcsMjEgKzc0NCwyOSBAQCBRVmFy
aWFudCBRV2ViRWxlbWVudDo6ZXZhbHVhdGVKYXZhU2NyaXB0KGNvbnN0IFFTdHJpbmcmIHNjcmlw
dFNvdXJjZSkKICAgICAgICAgcmV0dXJuIFFWYXJpYW50KCk7CiAKICAgICBTY3JpcHRTdGF0ZSog
c3RhdGUgPSAwOwotICAgIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWU7CiAgICAgU2NyaXB0Q29udHJv
bGxlciogc2NyaXB0Q29udHJvbGxlciA9IDA7CiAKLSAgICBpZiAoIXNldHVwU2NyaXB0Q29udGV4
dChtX2VsZW1lbnQsIHRoaXNWYWx1ZSwgc3RhdGUsIHNjcmlwdENvbnRyb2xsZXIpKQorICAgIGlm
ICghc2V0dXBTY3JpcHRDb250ZXh0KG1fZWxlbWVudCwgc3RhdGUsIHNjcmlwdENvbnRyb2xsZXIp
KQorICAgICAgICByZXR1cm4gUVZhcmlhbnQoKTsKKworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxv
Y2soc3RhdGUpOworICAgIFJlZlB0cjxFbGVtZW50PiBwcm90ZWN0ID0gbV9lbGVtZW50OworCisg
ICAgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSA9IHRvSlMoc3RhdGUsIHRvSlNET01HbG9iYWxPYmpl
Y3QobV9lbGVtZW50LT5kb2N1bWVudCgpLCBzdGF0ZSksIG1fZWxlbWVudCk7CisgICAgaWYgKCF0
aGlzVmFsdWUpCiAgICAgICAgIHJldHVybiBRVmFyaWFudCgpOwotICAgIFN0cmluZyBzY3JpcHQo
cmVpbnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgVUNoYXIqPihzY3JpcHRTb3VyY2UuZGF0YSgpKSwg
c2NyaXB0U291cmNlLmxlbmd0aCgpKTsKKworICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNlQ29k
ZShzY3JpcHRTb3VyY2UpOwogCiAgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRpb25FeGNlcHRpb247
Ci0gICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRpb25SZXN1bHQgPSBKU0M6OmV2YWx1YXRlKHN0YXRl
LCBKU0M6Om1ha2VTb3VyY2Uoc2NyaXB0KSwgdGhpc1ZhbHVlLCAmZXZhbHVhdGlvbkV4Y2VwdGlv
bik7CisgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRpb25SZXN1bHQgPSBKU0M6OmV2YWx1YXRlKHN0
YXRlLCBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpLCB0aGlzVmFsdWUsICZldmFsdWF0aW9uRXhj
ZXB0aW9uKTsKICAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKICAgICAgICAgcmV0dXJuIFFW
YXJpYW50KCk7CisgICAgSlNWYWx1ZVJlZiBldmFsdWF0aW9uUmVzdWx0UmVmID0gdG9SZWYoc3Rh
dGUsIGV2YWx1YXRpb25SZXN1bHQpOwogCiAgICAgaW50IGRpc3RhbmNlID0gMDsKICAgICBKU1Zh
bHVlUmVmKiBpZ25vcmVkRXhjZXB0aW9uID0gMDsKLSAgICByZXR1cm4gSlNDOjpCaW5kaW5nczo6
Y29udmVydFZhbHVlVG9RVmFyaWFudCh0b1JlZihzdGF0ZSksIHRvUmVmKHN0YXRlLCBldmFsdWF0
aW9uUmVzdWx0KSwgUU1ldGFUeXBlOjpWb2lkLCAmZGlzdGFuY2UsIGlnbm9yZWRFeGNlcHRpb24p
OworICAgIHJldHVybiBKU0M6OkJpbmRpbmdzOjpjb252ZXJ0VmFsdWVUb1FWYXJpYW50KHRvUmVm
KHN0YXRlKSwgZXZhbHVhdGlvblJlc3VsdFJlZiwgUU1ldGFUeXBlOjpWb2lkLCAmZGlzdGFuY2Us
IGlnbm9yZWRFeGNlcHRpb24pOwogfQogCiAvKiEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwCmluZGV4IDM5M2NjMzc4OTQ1OWQz
YmMyYjlhNjYzMWFhNmIwYWMwNmRjYjc5M2UuLmIzYzIzOThhYjM1NWRkODE4NmE1NWEwNzA1ZDU0
NGUyMzk0MDBjYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
UVdlYkZyYW1lQWRhcHRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9RV2ViRnJhbWVBZGFwdGVyLmNwcApAQCAtMTk3LDE0ICsxOTcsMTcgQEAgdm9pZCBRV2ViRnJh
bWVBZGFwdGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQoUUdlc3R1cmVFdmVudEZhY2FkZSogZ2VzdHVy
ZUV2ZW50KQogCiBRVmFyaWFudCBRV2ViRnJhbWVBZGFwdGVyOjpldmFsdWF0ZUphdmFTY3JpcHQo
Y29uc3QgUVN0cmluZyAmc2NyaXB0U291cmNlKQogewotICAgIFNjcmlwdENvbnRyb2xsZXIqIHBy
b3h5ID0gZnJhbWUtPnNjcmlwdCgpOworICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRy
b2xsZXIgPSBmcmFtZS0+c2NyaXB0KCk7CiAgICAgUVZhcmlhbnQgcmM7Ci0gICAgaWYgKHByb3h5
KSB7CisgICAgaWYgKHNjcmlwdENvbnRyb2xsZXIpIHsKICAgICAgICAgaW50IGRpc3RhbmNlID0g
MDsKLSAgICAgICAgSlNDOjpKU1ZhbHVlIHYgPSBmcmFtZS0+c2NyaXB0KCktPmV4ZWN1dGVTY3Jp
cHQoU2NyaXB0U291cmNlQ29kZShzY3JpcHRTb3VyY2UpKS5qc1ZhbHVlKCk7Ci0gICAgICAgIEpT
Qzo6RXhlY1N0YXRlKiBleGVjID0gcHJveHktPmdsb2JhbE9iamVjdChtYWluVGhyZWFkTm9ybWFs
V29ybGQoKSktPmdsb2JhbEV4ZWMoKTsKKyAgICAgICAgU2NyaXB0VmFsdWUgdmFsdWUgPSBzY3Jp
cHRDb250cm9sbGVyLT5leGVjdXRlU2NyaXB0KFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0U291cmNl
KSk7CisgICAgICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gc2NyaXB0Q29udHJvbGxlci0+Z2xv
YmFsT2JqZWN0KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+Z2xvYmFsRXhlYygpOwogICAgICAg
ICBKU1ZhbHVlUmVmKiBpZ25vcmVkRXhjZXB0aW9uID0gMDsKLSAgICAgICAgcmMgPSBKU0M6OkJp
bmRpbmdzOjpjb252ZXJ0VmFsdWVUb1FWYXJpYW50KHRvUmVmKGV4ZWMpLCB0b1JlZihleGVjLCB2
KSwgUU1ldGFUeXBlOjpWb2lkLCAmZGlzdGFuY2UsIGlnbm9yZWRFeGNlcHRpb24pOworICAgICAg
ICBleGVjLT52bSgpLmFwaUxvY2soKS5sb2NrKCk7CisgICAgICAgIEpTVmFsdWVSZWYgdmFsdWVS
ZWYgPSB0b1JlZihleGVjLCB2YWx1ZS5qc1ZhbHVlKCkpOworICAgICAgICBleGVjLT52bSgpLmFw
aUxvY2soKS51bmxvY2soKTsKKyAgICAgICAgcmMgPSBKU0M6OkJpbmRpbmdzOjpjb252ZXJ0VmFs
dWVUb1FWYXJpYW50KHRvUmVmKGV4ZWMpLCB2YWx1ZVJlZiwgUU1ldGFUeXBlOjpWb2lkLCAmZGlz
dGFuY2UsIGlnbm9yZWRFeGNlcHRpb24pOwogICAgIH0KICAgICByZXR1cm4gcmM7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>