<?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>29966</bug_id>
          
          <creation_ts>2009-10-01 09:17:42 -0700</creation_ts>
          <short_desc>Assertion failure in RenderBlock::positionForPointWithInlineChildren when running fast/inline/relative-positioned-overflow.html</short_desc>
          <delta_ts>2009-11-30 08:10:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, LayoutTestFailure, PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Roben (:aroben)">aroben</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>hamaji</cc>
    
    <cc>hyatt</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>151577</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-10-01 09:17:42 -0700</bug_when>
    <thetext>Debug builds on Windows are hitting an assertion in RenderBlock::positionForPointWithInlineChildren when running fast/inline/relative-positioned-overflow.html

To reproduce:

1. run-webkit-tests fast/inline/relative-positioned-overflow.html

You&apos;ll hit this assertion:

        ASSERT(!useWindowsBehavior);

&lt;http://trac.webkit.org/browser/trunk/WebCore/rendering/RenderBlock.cpp?rev=48679#L3437&gt;

Here&apos;s the backtrace:

&gt;	WebKit_debug.dll!WebCore::RenderBlock::positionForPointWithInlineChildren(const WebCore::IntPoint &amp; pointInContents={...})  Line 3437 + 0x24 bytes	C++
 	WebKit_debug.dll!WebCore::RenderBlock::positionForPoint(const WebCore::IntPoint &amp; point={...})  Line 3470 + 0x10 bytes	C++
 	WebKit_debug.dll!WebCore::RenderInline::positionForPoint(const WebCore::IntPoint &amp; point={...})  Line 503 + 0x1a bytes	C++
 	WebKit_debug.dll!WebCore::EventHandler::handleMousePressEventSingleClick(const WebCore::MouseEventWithHitTestResults &amp; event={...})  Line 323 + 0x3a bytes	C++
 	WebKit_debug.dll!WebCore::EventHandler::handleMousePressEvent(const WebCore::MouseEventWithHitTestResults &amp; event={...})  Line 418 + 0xc bytes	C++
 	WebKit_debug.dll!WebCore::EventHandler::handleMousePressEvent(const WebCore::PlatformMouseEvent &amp; mouseEvent={...})  Line 1265 + 0xf bytes	C++
 	WebKit_debug.dll!WebView::handleMouseEvent(unsigned int message=513, unsigned int wParam=0, long lParam=3276850)  Line 1302 + 0x1d bytes	C++
 	WebKit_debug.dll!WebViewWndProc(HWND__ * hWnd=0x0005058e, unsigned int message=513, unsigned int wParam=0, long lParam=3276850)  Line 1908 + 0x14 bytes	C++
 	user32.dll!_InternalCallWinProc@20()  + 0x28 bytes	
 	user32.dll!_UserCallWinProcCheckWow@32()  + 0xb7 bytes	
 	user32.dll!_DispatchMessageWorker@8()  + 0xdc bytes	
 	user32.dll!_DispatchMessageW@4()  + 0xf bytes	
 	DumpRenderTree_debug.exe!dispatchMessage(const tagMSG * msg=0x0012e158)  Line 128 + 0xc bytes	C++
 	DumpRenderTree_debug.exe!mouseDownCallback(const OpaqueJSContext * context=0x06400098, OpaqueJSValue * function=0x06843100, OpaqueJSValue * thisObject=0x06842b80, unsigned int argumentCount=0, const OpaqueJSValue * const * arguments=0x0012e1f8, const OpaqueJSValue * * exception=0x0012e1dc)  Line 179 + 0x9 bytes	C++
 	JavaScriptCore_debug.dll!JSC::JSCallbackFunction::call(JSC::ExecState * exec=0x06400098, JSC::JSObject * functionObject=0x06843100, JSC::JSValue thisValue={...}, const JSC::ArgList &amp; args={...})  Line 65 + 0x27 bytes	C++
 	JavaScriptCore_debug.dll!cti_op_call_NotJSFunction(void * * args=0x0012e350)  Line 1607 + 0x31 bytes	C++
 	JavaScriptCore_debug.dll!@cti_op_convert_this@4()  + 0x10f bytes	C++
 	JavaScriptCore_debug.dll!JSC::JITCode::execute(JSC::RegisterFile * registerFile=0x04f31eac, JSC::ExecState * callFrame=0x06400048, JSC::JSGlobalData * globalData=0x04f16608, JSC::JSValue * exception=0x0012e4a0)  Line 79 + 0x24 bytes	C++
 	JavaScriptCore_debug.dll!JSC::Interpreter::execute(JSC::ProgramExecutable * program=0x04f62dc8, JSC::ExecState * callFrame=0x04f323e0, JSC::ScopeChainNode * scopeChain=0x04f32598, JSC::JSObject * thisObj=0x06840000, JSC::JSValue * exception=0x0012e4a0)  Line 658 + 0x31 bytes	C++
 	JavaScriptCore_debug.dll!JSC::evaluate(JSC::ExecState * exec=0x04f323e0, JSC::ScopeChain &amp; scopeChain={...}, const JSC::SourceCode &amp; source={...}, JSC::JSValue thisValue={...})  Line 62	C++
 	WebKit_debug.dll!WebCore::ScriptController::evaluate(const WebCore::ScriptSourceCode &amp; sourceCode={...})  Line 110 + 0x34 bytes	C++
 	WebKit_debug.dll!WebCore::FrameLoader::executeScript(const WebCore::ScriptSourceCode &amp; sourceCode={...})  Line 807	C++
 	WebKit_debug.dll!WebCore::HTMLTokenizer::scriptExecution(const WebCore::ScriptSourceCode &amp; sourceCode={...}, WebCore::HTMLTokenizer::State state={...})  Line 563 + 0x27 bytes	C++
 	WebKit_debug.dll!WebCore::HTMLTokenizer::scriptHandler(WebCore::HTMLTokenizer::State state={...})  Line 505 + 0x88 bytes	C++
 	WebKit_debug.dll!WebCore::HTMLTokenizer::parseNonHTMLText(WebCore::SegmentedString &amp; src={...}, WebCore::HTMLTokenizer::State state={...})  Line 352 + 0x10 bytes	C++
 	WebKit_debug.dll!WebCore::HTMLTokenizer::parseTag(WebCore::SegmentedString &amp; src={...}, WebCore::HTMLTokenizer::State state={...})  Line 1522 + 0x17 bytes	C++
 	WebKit_debug.dll!WebCore::HTMLTokenizer::write(const WebCore::SegmentedString &amp; str={...}, bool appendData=true)  Line 1756 + 0x1c bytes	C++
 	WebKit_debug.dll!WebCore::FrameLoader::write(const char * str=0x00000000, int len=0, bool flush=true)  Line 1054 + 0x27 bytes	C++
 	WebKit_debug.dll!WebCore::FrameLoader::endIfNotLoadingMainResource()  Line 1090	C++
 	WebKit_debug.dll!WebCore::FrameLoader::end()  Line 1076	C++
 	WebKit_debug.dll!WebCore::DocumentLoader::finishedLoading()  Line 332	C++
 	WebKit_debug.dll!WebCore::FrameLoader::finishedLoading()  Line 3264	C++
 	WebKit_debug.dll!WebCore::MainResourceLoader::didFinishLoading()  Line 376	C++
 	WebKit_debug.dll!WebCore::ResourceLoader::didFinishLoading(WebCore::ResourceHandle * __formal=0x04e9eba0)  Line 403 + 0xf bytes	C++
 	WebKit_debug.dll!WebCore::didFinishLoading(_CFURLConnection * conn=0x04eff160, const void * clientInfo=0x04e9eba0)  Line 228 + 0x1e bytes	C++</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151578</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-10-01 09:18:10 -0700</bug_when>
    <thetext>This test seems to pass in Release builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151579</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-10-01 09:18:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/7267988&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151978</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-02 15:03:55 -0700</bug_when>
    <thetext>Was this a regression?  Do we know yet from which revision?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166695</commentid>
    <comment_count>4</comment_count>
      <attachid>43914</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-11-26 05:02:06 -0800</bug_when>
    <thetext>Created attachment 43914
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166696</commentid>
    <comment_count>5</comment_count>
      <attachid>43915</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-11-26 05:05:35 -0800</bug_when>
    <thetext>Created attachment 43915
test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166699</commentid>
    <comment_count>6</comment_count>
      <attachid>43916</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-11-26 05:11:29 -0800</bug_when>
    <thetext>Created attachment 43916
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166700</commentid>
    <comment_count>7</comment_count>
      <attachid>43914</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-11-26 05:12:32 -0800</bug_when>
    <thetext>Comment on attachment 43914
Patch v1

This was a bit older patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166701</commentid>
    <comment_count>8</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-11-26 05:13:47 -0800</bug_when>
    <thetext>This issue happens when an empty inline element (which has size because of paddings) is clicked. In this case, the root inline box has no leaf children and closestBox can be NULL even if we are using windows behavior.

We may need to use lastChild instead of lastLeafChild when lastLeafChild is NULL so that the mouse press starts from the empty inline element correctly. See the attached test case, which is the same HTML as the layout test I added, to see how dragging from an empty inline element is handled now.

Chromium has the same issue: http://code.google.com/p/chromium/issues/detail?id=23751</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166747</commentid>
    <comment_count>9</comment_count>
      <attachid>43916</attachid>
    <who name="">mitz</who>
    <bug_when>2009-11-26 10:02:33 -0800</bug_when>
    <thetext>Comment on attachment 43916
Patch v2

Thanks for working on this bug!

&gt; +    eventSender.mouseMoveTo(x, y + 50);
&gt; +    eventSender.mouseDown();
&gt; +    eventSender.mouseMoveTo(x, y + 40);
&gt; +    eventSender.mouseMoveTo(x, y + 30);
&gt; +    eventSender.mouseMoveTo(x, y + 20);
&gt; +    eventSender.mouseMoveTo(x, y + 10);
&gt; +    eventSender.mouseMoveTo(x, y);
&gt; +    eventSender.mouseUp();

Is there a reason to visit all the intermediate positions? I think you need just two mouseMoveTo()s, and even that is only because the selection start position is determined not on mouse down but on the first mouse move after that (which is arguably a bug). I think mouseMoveTo(x, y + 50); mouseDown(); mouseMoveTo(x, y + 50); mouseMoveTo(x, y); mouseUp(); will work.

I don’t understand why this fix is correct. Just using a non-leaf child (which is not even necessarily a left in the line box tree, it may have nested inline boxes) in this case seems inconsistent. What if there is a line in the middle that has no leaf boxes. What if the first line that has children has no leaf boxes? It seems like we may end up calling positionForBox(null, …) in such cases because we consider lines that have no leaf boxes and then call {first,last,closest}LeafChild on them. Perhaps the right thing to do is in the initial vertical scan loop, change
        if (!root-&gt;firstChild())
            continue;
to
        if (!root-&gt;firstLeafChild())
            continue;

so that only lines with leaf child boxes are considered. Did you try that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166748</commentid>
    <comment_count>10</comment_count>
    <who name="">mitz</who>
    <bug_when>2009-11-26 10:03:49 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; is not even necessarily a left in the line box tree, it may have nested inline

typo: s/left/leaf/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166752</commentid>
    <comment_count>11</comment_count>
      <attachid>43926</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-11-26 10:20:07 -0800</bug_when>
    <thetext>Created attachment 43926
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166755</commentid>
    <comment_count>12</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-11-26 10:35:44 -0800</bug_when>
    <thetext>Thanks for your quick review!

&gt; Is there a reason to visit all the intermediate positions? I think you need
&gt; just two mouseMoveTo()s, and even that is only because the selection start
&gt; position is determined not on mouse down but on the first mouse move after that
&gt; (which is arguably a bug). I think mouseMoveTo(x, y + 50); mouseDown();
&gt; mouseMoveTo(x, y + 50); mouseMoveTo(x, y); mouseUp(); will work.

Ah, it works. As this was my first patch around selection and inline
flows, I&apos;ve just emulated other tests in the same directory after I noticed
mouseMoveTo(x, y+50); mouseDown(); mouseMoveTo(x, y); mouseUp();
doesn&apos;t work due to the bug you mentioned.

&gt; I don’t understand why this fix is correct. Just using a non-leaf child (which
&gt; is not even necessarily a left in the line box tree, it may have nested inline
&gt; boxes) in this case seems inconsistent. What if there is a line in the middle
&gt; that has no leaf boxes. What if the first line that has children has no leaf
&gt; boxes? It seems like we may end up calling positionForBox(null, …) in such
&gt; cases because we consider lines that have no leaf boxes and then call
&gt; {first,last,closest}LeafChild on them. Perhaps the right thing to do is in the
&gt; initial vertical scan loop, change
&gt;         if (!root-&gt;firstChild())
&gt;             continue;
&gt; to
&gt;         if (!root-&gt;firstLeafChild())
&gt;             continue;
&gt; 
&gt; so that only lines with leaf child boxes are considered. Did you try that?

Yeah, you are right. I studied the code of inline box for a
while... it was insufficient :( My understanding about the structure of
inline boxes were completely wrong. Now I think I have a better
understanding thanks to your comment. Thanks!

I&apos;ll commit this patch tomorrow after I re-check the patch destroys nothing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167238</commentid>
    <comment_count>13</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-11-30 08:10:29 -0800</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/51429</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43914</attachid>
            <date>2009-11-26 05:02:06 -0800</date>
            <delta_ts>2009-11-26 05:12:32 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-29966-20091126220204.patch</filename>
            <type>text/plain</type>
            <size>5468</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzZmRhZmY4Li43M2FjODU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDktMTEt
MjYgIFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBc3NlcnRpb24gZmFpbHVyZSBp
biBSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbiB3aGVuIHJ1
bm5pbmcgZmFzdC9pbmxpbmUvcmVsYXRpdmUtcG9zaXRpb25lZC1vdmVyZmxvdy5odG1sCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTk2NgorCisgICAg
ICAgIEEgdGVzdCBjYXNlIHdoZXJlIGEgdXNlciBkcmFncyB0aGUgbW91c2UgZnJvbSBhbiBlbXB0
eSBpbmxpbmUKKyAgICAgICAgZWxlbWVudCB0byBhYm92ZSB0ZXh0cy4KKworICAgICAgICAqIGVk
aXRpbmcvc2VsZWN0aW9uL2xhc3QtZW1wdHktaW5saW5lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vbGFzdC1lbXB0eS1pbmxpbmUuaHRtbDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CisKIDIwMDktMTEtMjUgIENzYWJhIE9z
enRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIEF1ZGlvIHJlbGF0
ZWQgbGF5b3V0IHRlc3RzIGFyZSBmYWlsaW5nIG9uIHRoZSBidWlsZGJvdApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbGFzdC1lbXB0eS1pbmxpbmUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbGFzdC1lbXB0eS1pbmxpbmUtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0NDY0ZDEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9sYXN0LWVtcHR5
LWlubGluZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBACitUbyB0ZXN0IHRoaXMgbWFudWFs
bHksIHByZXNzIG1vdXNlIGJ1dHRvbiBiZWxvdyB0aGUgY29tbWEgYmV0d2VlbiAiSGVsbG8iIGFu
ZCAid29ybGQhIiBhbmQgZHJhZyB0aGUgbW91c2UgdG8gdGhlIGNvbW1hLiBJdCdzIE9LIGlmICJ3
b3JsZCEiIGlzIHNlbGVjdGVkLgorUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zZWxlY3Rpb24vbGFzdC1lbXB0eS1pbmxpbmUuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL2xhc3QtZW1wdHktaW5saW5lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uOTc2YTIwZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRp
bmcvc2VsZWN0aW9uL2xhc3QtZW1wdHktaW5saW5lLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPGRp
dj4KK1RvIHRlc3QgdGhpcyBtYW51YWxseSwgcHJlc3MgbW91c2UgYnV0dG9uIGJlbG93IHRoZSBj
b21tYSBiZXR3ZWVuICJIZWxsbyIgYW5kICJ3b3JsZCEiIGFuZCBkcmFnIHRoZSBtb3VzZSB0byB0
aGUgY29tbWEuIEl0J3MgT0sgaWYgIndvcmxkISIgaXMgc2VsZWN0ZWQuCis8L2Rpdj4KKworPGRp
diBpZD0icmVzdWx0IiBzdHlsZT0id2lkdGg6IDEwMHB4OyI+Cis8c3Bhbj5IZWxsbyw8L3NwYW4+
PHNwYW4gaWQ9IndvcmxkIj53b3JsZCE8L3NwYW4+PHNwYW4gc3R5bGU9InBhZGRpbmctbGVmdDog
MTAwcHg7IHBhZGRpbmctYm90dG9tOiAxMDBweDsgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsgaGVp
Z2h0OiAxMDBweDsiPjwvc3Bhbj4KKzwvZGl2PgorCis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKworICAgIHZhciB3b3JsZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3b3JsZCIpOwor
ICAgIHZhciB4ID0gd29ybGQub2Zmc2V0TGVmdDsKKyAgICB2YXIgeSA9IHdvcmxkLm9mZnNldFRv
cDsKKworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkgKyA1MCk7CisgICAgZXZlbnRT
ZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSArIDQw
KTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5ICsgMzApOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHgsIHkgKyAyMCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
eCwgeSArIDEwKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVu
dFNlbmRlci5tb3VzZVVwKCk7CisKKyAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlc3VsdCIpOworICAgIGlmICh3aW5kb3cuZ2V0U2VsZWN0aW9uKCkgPT0gIndvcmxk
ISIpIHsKKyAgICAgICAgcmVzdWx0LnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICJncmVlbiI7Cisg
ICAgICAgIHJlc3VsdC5pbm5lckhUTUwgPSAiUEFTUyI7CisgICAgfSBlbHNlCisgICAgICAgIHJl
c3VsdC5pbm5lckhUTUwgPSAiRkFJTEVEOiB0aGUgc2VsZWN0aW9uIHdhcyAiICsgd2luZG93Lmdl
dFNlbGVjdGlvbigpOworfQorPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCmluZGV4
IDQxYTNhMjguLjlhN2E0MDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9T
a2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCkBAIC02NjksOSAr
NjY5LDYgQEAgaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1taXNzaW5n
LWZpbGUtZXhjZXB0aW9uLmh0bWwKICMgVGhpcyBwb3J0IGRvZXNuJ3Qgc3VwcG9ydCBkZXRlY3Rp
bmcgc2xvdyB1bmxvYWQgaGFuZGxlcnMuCiBmYXN0L2RvbS9XaW5kb3cvc2xvd191bmxvYWRfaGFu
ZGxlci5odG1sCiAKLSMgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
OTk2Nj4KLWZhc3QvaW5saW5lL3JlbGF0aXZlLXBvc2l0aW9uZWQtb3ZlcmZsb3cuaHRtbAotCiAj
IDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAzNDg+CiBwbHVnaW5z
L3ByaXZhdGUtYnJvd3NpbmctbW9kZS5odG1sCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Q3OWVhNi4uYTlkNTM3YSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MiBAQAorMjAwOS0xMS0yNiAgU2hpbmljaGlybyBIYW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFzc2Vy
dGlvbiBmYWlsdXJlIGluIFJlbmRlckJsb2NrOjpwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNo
aWxkcmVuIHdoZW4gcnVubmluZyBmYXN0L2lubGluZS9yZWxhdGl2ZS1wb3NpdGlvbmVkLW92ZXJm
bG93Lmh0bWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI5OTY2CisKKyAgICAgICAgV2hlbiBhbiBlbXB0eSBpbmxpbmUgZWxlbWVudCBpcyBjbGlja2Vk
LCB0aGUgcm9vdCBpbmxpbmUgYm94IGhhcworICAgICAgICBubyBsZWFmIGNoaWxkcmVuLiBVc2Ug
dGhlIHJlbmRlcmVyIG9mIGEgbm9ybWFsIGNoaWxkIGluc3RlYWQuCisKKyAgICAgICAgVGhpcyBj
aGFuZ2UgcmVzb2x2ZXMgV2luZG93cyBwb3J0J3MgYXNzZXJ0aW9uIGZhaWx1cmUgaW4gYSBsYXlv
dXQgdGVzdC4KKyAgICAgICAgQWxzbywgdGhpcyBmaXhlcyB0aGUgYmVoYXZpb3Igd2hlbiBhIHVz
ZXIgZHJhZ3MgdGhlIG1vdXNlIGZyb20gYW4KKyAgICAgICAgZW1wdHkgaW5saW5lIGVsZW1lbnQg
dG8gYWJvdmUgdGV4dHMuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9zZWxlY3Rpb24vbGFzdC1l
bXB0eS1pbmxpbmUuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpwb3NpdGlvbkZvclBvaW50V2l0aElubGlu
ZUNoaWxkcmVuKToKKwogMjAwOS0xMS0yNSAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwCmluZGV4IDlkOWI3MGMuLjNhMTkwM2YgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAKQEAgLTM0NDksOSArMzQ0OSwxNSBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVy
QmxvY2s6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4oY29uc3QgSW50UG9pbnQm
CiAgICAgfQogCiAgICAgaWYgKGxhc3RSb290Qm94V2l0aENoaWxkcmVuKSB7Ci0gICAgICAgIC8v
IFdlIGhpdCB0aGlzIGNhc2UgZm9yIE1hYyBiZWhhdmlvciB3aGVuIHRoZSBZIGNvb3JkaW5hdGUg
aXMgYmVsb3cgdGhlIGxhc3QgYm94LgotICAgICAgICBBU1NFUlQoIXVzZVdpbmRvd3NCZWhhdmlv
cik7Ci0gICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24ocG9zaXRpb25Gb3JCb3gobGFzdFJv
b3RCb3hXaXRoQ2hpbGRyZW4tPmxhc3RMZWFmQ2hpbGQoKSwgZmFsc2UpLCBET1dOU1RSRUFNKTsK
KyAgICAgICAgSW5saW5lQm94KiBjaGlsZEJveCA9IGxhc3RSb290Qm94V2l0aENoaWxkcmVuLT5s
YXN0TGVhZkNoaWxkKCk7CisgICAgICAgIGlmIChjaGlsZEJveCkKKyAgICAgICAgICAgIC8vIFdl
IGhpdCB0aGlzIGNhc2UgZm9yIE1hYyBiZWhhdmlvciB3aGVuIHRoZSBZIGNvb3JkaW5hdGUgaXMg
YmVsb3cgdGhlIGxhc3QgYm94LgorICAgICAgICAgICAgQVNTRVJUKCF1c2VXaW5kb3dzQmVoYXZp
b3IpOworICAgICAgICBlbHNlCisgICAgICAgICAgICAvLyBUaGVyZSBhcmUgbm8gbGVhZiBjaGls
ZHJlbiBhcyB0aGlzIGJveCBoYXMgbm8gdGV4dCBpbiBpdC4gVXNlIGxhc3RDaGlsZCBpbnN0ZWFk
LgorICAgICAgICAgICAgY2hpbGRCb3ggPSBsYXN0Um9vdEJveFdpdGhDaGlsZHJlbi0+bGFzdENo
aWxkKCk7CisKKyAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihwb3NpdGlvbkZvckJveChj
aGlsZEJveCwgZmFsc2UpLCBET1dOU1RSRUFNKTsKICAgICB9CiAKICAgICAvLyBDYW4ndCByZWFj
aCB0aGlzLiBXZSBoYXZlIGEgcm9vdCBsaW5lIGJveCwgYnV0IGl0IGhhcyBubyBraWRzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>43915</attachid>
            <date>2009-11-26 05:05:35 -0800</date>
            <delta_ts>2009-11-26 05:05:35 -0800</delta_ts>
            <desc>test case</desc>
            <filename>last-empty-inline.html</filename>
            <type>text/html</type>
            <size>1139</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">PGRpdj4KVG8gdGVzdCB0aGlzIG1hbnVhbGx5LCBwcmVzcyBtb3VzZSBidXR0b24gYmVsb3cgdGhl
IGNvbW1hIGJldHdlZW4gIkhlbGxvIiBhbmQgIndvcmxkISIgYW5kIGRyYWcgdGhlIG1vdXNlIHRv
IHRoZSBjb21tYS4gSXQncyBPSyBpZiAid29ybGQhIiBpcyBzZWxlY3RlZC4KPC9kaXY+Cgo8ZGl2
IGlkPSJyZXN1bHQiIHN0eWxlPSJ3aWR0aDogMjAwcHg7Ij4KPHNwYW4+SGVsbG8sPC9zcGFuPjxz
cGFuIGlkPSJ3b3JsZCI+d29ybGQhPC9zcGFuPjxzcGFuIHN0eWxlPSJwYWRkaW5nLWxlZnQ6IDIw
MHB4OyBwYWRkaW5nLWJvdHRvbTogMjAwcHg7IGJhY2tncm91bmQtY29sb3I6IGJsdWU7IGhlaWdo
dDogMjAwcHg7Ij48L3NwYW4+CjwvZGl2PgoKPHNjcmlwdD4KaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewogICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwoKICAg
IHZhciB3b3JsZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3b3JsZCIpOwogICAgdmFyIHgg
PSB3b3JsZC5vZmZzZXRMZWZ0OwogICAgdmFyIHkgPSB3b3JsZC5vZmZzZXRUb3A7CgogICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSArIDUwKTsKICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93
bigpOwogICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSArIDQwKTsKICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHgsIHkgKyAzMCk7CiAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4
LCB5ICsgMjApOwogICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSArIDEwKTsKICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOwogICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwoK
ICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7CiAgICBp
ZiAod2luZG93LmdldFNlbGVjdGlvbigpID09ICJ3b3JsZCEiKSB7CiAgICAgICAgcmVzdWx0LnN0
eWxlLmJhY2tncm91bmRDb2xvciA9ICJncmVlbiI7CiAgICAgICAgcmVzdWx0LmlubmVySFRNTCA9
ICJQQVNTIjsKICAgIH0gZWxzZQogICAgICAgIHJlc3VsdC5pbm5lckhUTUwgPSAiRkFJTEVEOiB0
aGUgc2VsZWN0aW9uIHdhcyAiICsgd2luZG93LmdldFNlbGVjdGlvbigpOwp9Cjwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43916</attachid>
            <date>2009-11-26 05:11:29 -0800</date>
            <delta_ts>2009-11-26 10:20:01 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-29966-20091126221126.patch</filename>
            <type>text/plain</type>
            <size>5466</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxODRhNjU2Li5lMjM1YWNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDktMTEt
MjYgIFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBc3NlcnRpb24gZmFpbHVyZSBp
biBSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbiB3aGVuIHJ1
bm5pbmcgZmFzdC9pbmxpbmUvcmVsYXRpdmUtcG9zaXRpb25lZC1vdmVyZmxvdy5odG1sCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTk2NgorCisgICAg
ICAgIEEgdGVzdCBjYXNlIHdoZXJlIGEgdXNlciBkcmFncyB0aGUgbW91c2UgZnJvbSBhbiBlbXB0
eSBpbmxpbmUKKyAgICAgICAgZWxlbWVudCB0byBhYm92ZSB0ZXh0cy4KKworICAgICAgICAqIGVk
aXRpbmcvc2VsZWN0aW9uL2xhc3QtZW1wdHktaW5saW5lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vbGFzdC1lbXB0eS1pbmxpbmUuaHRtbDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CisKIDIwMDktMTEtMjEgIEhvbGdlciBI
YW5zIFBldGVyIEZyZXl0aGVyICA8emVja2VAc2VsZmlzaC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9sYXN0LWVtcHR5LWlubGluZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9sYXN0LWVtcHR5LWlubGluZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ0NjRkMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2xhc3QtZW1wdHktaW5saW5lLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDIgQEAKK1RvIHRlc3QgdGhpcyBtYW51YWxseSwgcHJlc3Mg
bW91c2UgYnV0dG9uIGJlbG93IHRoZSBjb21tYSBiZXR3ZWVuICJIZWxsbyIgYW5kICJ3b3JsZCEi
IGFuZCBkcmFnIHRoZSBtb3VzZSB0byB0aGUgY29tbWEuIEl0J3MgT0sgaWYgIndvcmxkISIgaXMg
c2VsZWN0ZWQuCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9sYXN0LWVtcHR5LWlubGluZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24v
bGFzdC1lbXB0eS1pbmxpbmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li41MTNlNzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vbGFzdC1lbXB0eS1pbmxpbmUuaHRtbApAQCAtMCwwICsxLDMzIEBACis8ZGl2PgorVG8gdGVz
dCB0aGlzIG1hbnVhbGx5LCBwcmVzcyBtb3VzZSBidXR0b24gYmVsb3cgdGhlIGNvbW1hIGJldHdl
ZW4gIkhlbGxvIiBhbmQgIndvcmxkISIgYW5kIGRyYWcgdGhlIG1vdXNlIHRvIHRoZSBjb21tYS4g
SXQncyBPSyBpZiAid29ybGQhIiBpcyBzZWxlY3RlZC4KKzwvZGl2PgorCis8ZGl2IGlkPSJyZXN1
bHQiIHN0eWxlPSJ3aWR0aDogMjAwcHg7Ij4KKzxzcGFuPkhlbGxvLDwvc3Bhbj48c3BhbiBpZD0i
d29ybGQiPndvcmxkITwvc3Bhbj48c3BhbiBzdHlsZT0icGFkZGluZy1sZWZ0OiAyMDBweDsgcGFk
ZGluZy1ib3R0b206IDIwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOyBoZWlnaHQ6IDIwMHB4
OyI+PC9zcGFuPgorPC9kaXY+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAg
dmFyIHdvcmxkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndvcmxkIik7CisgICAgdmFyIHgg
PSB3b3JsZC5vZmZzZXRMZWZ0OworICAgIHZhciB5ID0gd29ybGQub2Zmc2V0VG9wOworCisgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSArIDUwKTsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5ICsgNDApOworICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkgKyAzMCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oeCwgeSArIDIwKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5ICsgMTAp
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlVXAoKTsKKworICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
dWx0Iik7CisgICAgaWYgKHdpbmRvdy5nZXRTZWxlY3Rpb24oKSA9PSAid29ybGQhIikgeworICAg
ICAgICByZXN1bHQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gImdyZWVuIjsKKyAgICAgICAgcmVz
dWx0LmlubmVySFRNTCA9ICJQQVNTIjsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0LmlubmVy
SFRNTCA9ICJGQUlMRUQ6IHRoZSBzZWxlY3Rpb24gd2FzICIgKyB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCk7Cit9Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9T
a2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKaW5kZXggYTRkNWJhMi4u
NDEzNWY2YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKQEAgLTY2OSw5ICs2NjksNiBAQCBo
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LW1pc3NpbmctZmlsZS1leGNl
cHRpb24uaHRtbAogIyBUaGlzIHBvcnQgZG9lc24ndCBzdXBwb3J0IGRldGVjdGluZyBzbG93IHVu
bG9hZCBoYW5kbGVycy4KIGZhc3QvZG9tL1dpbmRvdy9zbG93X3VubG9hZF9oYW5kbGVyLmh0bWwK
IAotIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5OTY2PgotZmFz
dC9pbmxpbmUvcmVsYXRpdmUtcG9zaXRpb25lZC1vdmVyZmxvdy5odG1sCi0KICMgPGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDM0OD4KIHBsdWdpbnMvcHJpdmF0ZS1i
cm93c2luZy1tb2RlLmh0bWwKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA3MTAwZDEwLi43NTMyOTlkIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDA5
LTExLTI2ICBTaGluaWNoaXJvIEhhbWFqaSAgPGhhbWFqaUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXNzZXJ0aW9uIGZhaWx1
cmUgaW4gUmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4gd2hl
biBydW5uaW5nIGZhc3QvaW5saW5lL3JlbGF0aXZlLXBvc2l0aW9uZWQtb3ZlcmZsb3cuaHRtbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk5NjYKKwor
ICAgICAgICBXaGVuIGFuIGVtcHR5IGlubGluZSBlbGVtZW50IGlzIGNsaWNrZWQsIHRoZSByb290
IGlubGluZSBib3ggaGFzCisgICAgICAgIG5vIGxlYWYgY2hpbGRyZW4uIFVzZSB0aGUgcmVuZGVy
ZXIgb2YgYSBub3JtYWwgY2hpbGQgaW5zdGVhZC4KKworICAgICAgICBUaGlzIGNoYW5nZSByZXNv
bHZlcyBXaW5kb3dzIHBvcnQncyBhc3NlcnRpb24gZmFpbHVyZSBpbiBhIGxheW91dCB0ZXN0Lgor
ICAgICAgICBBbHNvLCB0aGlzIGZpeGVzIHRoZSBiZWhhdmlvciB3aGVuIGEgdXNlciBkcmFncyB0
aGUgbW91c2UgZnJvbSBhbgorICAgICAgICBlbXB0eSBpbmxpbmUgZWxlbWVudCB0byBhYm92ZSB0
ZXh0cy4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL3NlbGVjdGlvbi9sYXN0LWVtcHR5LWlubGlu
ZS5odG1sCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4p
OgorCiAyMDA5LTExLTI2ICBHaXJpc2ggUmFtYWtyaXNobmFuICA8Z2lyaXNoQGZvcndhcmRiaWFz
LmluPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEhvbGdlciBGcmV5dGhlci4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAppbmRleCA5ZDliNzBjLi4zYTE5MDNmIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwCkBAIC0zNDQ5LDkgKzM0NDksMTUgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlckJs
b2NrOjpwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKGNvbnN0IEludFBvaW50Jgog
ICAgIH0KIAogICAgIGlmIChsYXN0Um9vdEJveFdpdGhDaGlsZHJlbikgewotICAgICAgICAvLyBX
ZSBoaXQgdGhpcyBjYXNlIGZvciBNYWMgYmVoYXZpb3Igd2hlbiB0aGUgWSBjb29yZGluYXRlIGlz
IGJlbG93IHRoZSBsYXN0IGJveC4KLSAgICAgICAgQVNTRVJUKCF1c2VXaW5kb3dzQmVoYXZpb3Ip
OwotICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKHBvc2l0aW9uRm9yQm94KGxhc3RSb290
Qm94V2l0aENoaWxkcmVuLT5sYXN0TGVhZkNoaWxkKCksIGZhbHNlKSwgRE9XTlNUUkVBTSk7Cisg
ICAgICAgIElubGluZUJveCogY2hpbGRCb3ggPSBsYXN0Um9vdEJveFdpdGhDaGlsZHJlbi0+bGFz
dExlYWZDaGlsZCgpOworICAgICAgICBpZiAoY2hpbGRCb3gpCisgICAgICAgICAgICAvLyBXZSBo
aXQgdGhpcyBjYXNlIGZvciBNYWMgYmVoYXZpb3Igd2hlbiB0aGUgWSBjb29yZGluYXRlIGlzIGJl
bG93IHRoZSBsYXN0IGJveC4KKyAgICAgICAgICAgIEFTU0VSVCghdXNlV2luZG93c0JlaGF2aW9y
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgLy8gVGhlcmUgYXJlIG5vIGxlYWYgY2hpbGRy
ZW4gYXMgdGhpcyBib3ggaGFzIG5vIHRleHQgaW4gaXQuIFVzZSBsYXN0Q2hpbGQgaW5zdGVhZC4K
KyAgICAgICAgICAgIGNoaWxkQm94ID0gbGFzdFJvb3RCb3hXaXRoQ2hpbGRyZW4tPmxhc3RDaGls
ZCgpOworCisgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24ocG9zaXRpb25Gb3JCb3goY2hp
bGRCb3gsIGZhbHNlKSwgRE9XTlNUUkVBTSk7CiAgICAgfQogCiAgICAgLy8gQ2FuJ3QgcmVhY2gg
dGhpcy4gV2UgaGF2ZSBhIHJvb3QgbGluZSBib3gsIGJ1dCBpdCBoYXMgbm8ga2lkcy4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43926</attachid>
            <date>2009-11-26 10:20:07 -0800</date>
            <delta_ts>2009-11-30 08:09:27 -0800</delta_ts>
            <desc>Patch v3</desc>
            <filename>bug-29966-20091127032005.patch</filename>
            <type>text/plain</type>
            <size>4856</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxODRhNjU2Li5lMjM1YWNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDktMTEt
MjYgIFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBc3NlcnRpb24gZmFpbHVyZSBp
biBSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbiB3aGVuIHJ1
bm5pbmcgZmFzdC9pbmxpbmUvcmVsYXRpdmUtcG9zaXRpb25lZC1vdmVyZmxvdy5odG1sCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTk2NgorCisgICAg
ICAgIEEgdGVzdCBjYXNlIHdoZXJlIGEgdXNlciBkcmFncyB0aGUgbW91c2UgZnJvbSBhbiBlbXB0
eSBpbmxpbmUKKyAgICAgICAgZWxlbWVudCB0byBhYm92ZSB0ZXh0cy4KKworICAgICAgICAqIGVk
aXRpbmcvc2VsZWN0aW9uL2xhc3QtZW1wdHktaW5saW5lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vbGFzdC1lbXB0eS1pbmxpbmUuaHRtbDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CisKIDIwMDktMTEtMjEgIEhvbGdlciBI
YW5zIFBldGVyIEZyZXl0aGVyICA8emVja2VAc2VsZmlzaC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9sYXN0LWVtcHR5LWlubGluZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9sYXN0LWVtcHR5LWlubGluZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ0NjRkMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2xhc3QtZW1wdHktaW5saW5lLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDIgQEAKK1RvIHRlc3QgdGhpcyBtYW51YWxseSwgcHJlc3Mg
bW91c2UgYnV0dG9uIGJlbG93IHRoZSBjb21tYSBiZXR3ZWVuICJIZWxsbyIgYW5kICJ3b3JsZCEi
IGFuZCBkcmFnIHRoZSBtb3VzZSB0byB0aGUgY29tbWEuIEl0J3MgT0sgaWYgIndvcmxkISIgaXMg
c2VsZWN0ZWQuCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9sYXN0LWVtcHR5LWlubGluZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24v
bGFzdC1lbXB0eS1pbmxpbmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4yMzMyOTgxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vbGFzdC1lbXB0eS1pbmxpbmUuaHRtbApAQCAtMCwwICsxLDMwIEBACis8ZGl2PgorVG8gdGVz
dCB0aGlzIG1hbnVhbGx5LCBwcmVzcyBtb3VzZSBidXR0b24gYmVsb3cgdGhlIGNvbW1hIGJldHdl
ZW4gIkhlbGxvIiBhbmQgIndvcmxkISIgYW5kIGRyYWcgdGhlIG1vdXNlIHRvIHRoZSBjb21tYS4g
SXQncyBPSyBpZiAid29ybGQhIiBpcyBzZWxlY3RlZC4KKzwvZGl2PgorCis8ZGl2IGlkPSJyZXN1
bHQiIHN0eWxlPSJ3aWR0aDogMjAwcHg7Ij4KKzxzcGFuPkhlbGxvLDwvc3Bhbj48c3BhbiBpZD0i
d29ybGQiPndvcmxkITwvc3Bhbj48c3BhbiBzdHlsZT0icGFkZGluZy1sZWZ0OiAyMDBweDsgcGFk
ZGluZy1ib3R0b206IDIwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOyBoZWlnaHQ6IDIwMHB4
OyI+PC9zcGFuPgorPC9kaXY+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAg
dmFyIHdvcmxkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndvcmxkIik7CisgICAgdmFyIHgg
PSB3b3JsZC5vZmZzZXRMZWZ0OworICAgIHZhciB5ID0gd29ybGQub2Zmc2V0VG9wOworCisgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSArIDUwKTsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5ICsgNTApOworICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsK
KworICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7Cisg
ICAgaWYgKHdpbmRvdy5nZXRTZWxlY3Rpb24oKSA9PSAid29ybGQhIikgeworICAgICAgICByZXN1
bHQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gImdyZWVuIjsKKyAgICAgICAgcmVzdWx0LmlubmVy
SFRNTCA9ICJQQVNTIjsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0LmlubmVySFRNTCA9ICJG
QUlMRUQ6IHRoZSBzZWxlY3Rpb24gd2FzICIgKyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Cit9Cis8
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKaW5kZXggYTRkNWJhMi4uNDEzNWY2YSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKQEAgLTY2OSw5ICs2NjksNiBAQCBodHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LW1pc3NpbmctZmlsZS1leGNlcHRpb24uaHRt
bAogIyBUaGlzIHBvcnQgZG9lc24ndCBzdXBwb3J0IGRldGVjdGluZyBzbG93IHVubG9hZCBoYW5k
bGVycy4KIGZhc3QvZG9tL1dpbmRvdy9zbG93X3VubG9hZF9oYW5kbGVyLmh0bWwKIAotIyA8aHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5OTY2PgotZmFzdC9pbmxpbmUv
cmVsYXRpdmUtcG9zaXRpb25lZC1vdmVyZmxvdy5odG1sCi0KICMgPGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDM0OD4KIHBsdWdpbnMvcHJpdmF0ZS1icm93c2luZy1t
b2RlLmh0bWwKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA3MTAwZDEwLi43NTMyOTlkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDA5LTExLTI2ICBT
aGluaWNoaXJvIEhhbWFqaSAgPGhhbWFqaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXNzZXJ0aW9uIGZhaWx1cmUgaW4gUmVu
ZGVyQmxvY2s6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4gd2hlbiBydW5uaW5n
IGZhc3QvaW5saW5lL3JlbGF0aXZlLXBvc2l0aW9uZWQtb3ZlcmZsb3cuaHRtbAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk5NjYKKworICAgICAgICBX
aGVuIGFuIGVtcHR5IGlubGluZSBlbGVtZW50IGlzIGNsaWNrZWQsIHRoZSByb290IGlubGluZSBi
b3ggaGFzCisgICAgICAgIG5vIGxlYWYgY2hpbGRyZW4uIFVzZSB0aGUgcmVuZGVyZXIgb2YgYSBu
b3JtYWwgY2hpbGQgaW5zdGVhZC4KKworICAgICAgICBUaGlzIGNoYW5nZSByZXNvbHZlcyBXaW5k
b3dzIHBvcnQncyBhc3NlcnRpb24gZmFpbHVyZSBpbiBhIGxheW91dCB0ZXN0LgorICAgICAgICBB
bHNvLCB0aGlzIGZpeGVzIHRoZSBiZWhhdmlvciB3aGVuIGEgdXNlciBkcmFncyB0aGUgbW91c2Ug
ZnJvbSBhbgorICAgICAgICBlbXB0eSBpbmxpbmUgZWxlbWVudCB0byBhYm92ZSB0ZXh0cy4KKwor
ICAgICAgICBUZXN0OiBlZGl0aW5nL3NlbGVjdGlvbi9sYXN0LWVtcHR5LWlubGluZS5odG1sCisK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4pOgorCiAyMDA5
LTExLTI2ICBHaXJpc2ggUmFtYWtyaXNobmFuICA8Z2lyaXNoQGZvcndhcmRiaWFzLmluPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEhvbGdlciBGcmV5dGhlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcAppbmRleCA5ZDliNzBjLi4yNjU1MTUwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
CkBAIC0zNDA2LDcgKzM0MDYsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2s6OnBvc2l0
aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4oY29uc3QgSW50UG9pbnQmCiAgICAgUm9vdElu
bGluZUJveCogZmlyc3RSb290Qm94V2l0aENoaWxkcmVuID0gMDsKICAgICBSb290SW5saW5lQm94
KiBsYXN0Um9vdEJveFdpdGhDaGlsZHJlbiA9IDA7CiAgICAgZm9yIChSb290SW5saW5lQm94KiBy
b290ID0gZmlyc3RSb290Qm94KCk7IHJvb3Q7IHJvb3QgPSByb290LT5uZXh0Um9vdEJveCgpKSB7
Ci0gICAgICAgIGlmICghcm9vdC0+Zmlyc3RDaGlsZCgpKQorICAgICAgICBpZiAoIXJvb3QtPmZp
cnN0TGVhZkNoaWxkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKCFmaXJz
dFJvb3RCb3hXaXRoQ2hpbGRyZW4pCiAgICAgICAgICAgICBmaXJzdFJvb3RCb3hXaXRoQ2hpbGRy
ZW4gPSByb290Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>