<?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>32131</bug_id>
          
          <creation_ts>2009-12-03 13:05:24 -0800</creation_ts>
          <short_desc>WebCore::canHaveChildrenForEditing ReadAV@NULL (cd05b3b20e0f4c6b3afe5d165a1798aa)</short_desc>
          <delta_ts>2010-03-08 20:32:23 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows Vista</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://skypher.com/SkyLined/Repro/WebKit/Bug%2032131%20-%20WebCore..canHaveChildrenForEditing%20ReadAV@NULL%20(cd05b3b20e0f4c6b3afe5d165a1798aa)/repro.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction, InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Berend-Jan Wever">skylined</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>adele</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>eric</cc>
    
    <cc>justin.garcia</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>168515</commentid>
    <comment_count>0</comment_count>
      <attachid>44266</attachid>
    <who name="Berend-Jan Wever">skylined</who>
    <bug_when>2009-12-03 13:05:24 -0800</bug_when>
    <thetext>Created attachment 44266
Repro

The following HTML causes a NULL pointer read access violation exception in WebCore::canHaveChildrenForEditing:

&lt;BODY&gt;&lt;/BODY&gt;
&lt;SCRIPT&gt;
  document.execCommand(&quot;SelectAll&quot;);
  document.designMode = &quot;on&quot;;
  document.execCommand(&quot;underline&quot;);
  document.execCommand(&quot;InsertUnorderedList&quot;);
  document.execCommand(&quot;InsertImage&quot;);
  document.execCommand(&quot;InsertLineBreak&quot;);
  document.execCommand(&quot;InsertText&quot;, false, 34359738365);
  document.execCommand(&quot;JustifyRight&quot;);
  document.execCommand(&quot;Outdent&quot;);
  document.execCommand(&quot;insertunorderedlist&quot;);
  document.execCommand(&quot;JustifyCenter&quot;);
  document.execCommand(&quot;selectall&quot;);
  document.execCommand(&quot;insertorderedlist&quot;);
&lt;/SCRIPT&gt;

Relevant call stack:
 WebCore::canHaveChildrenForEditing
 WebCore::CompositeEditCommand::insertNodeAt
 WebCore::InsertListCommand::doApply
 WebCore::InsertListCommand::modifyRange
 WebCore::InsertListCommand::doApply
 WebCore::EditCommand::apply
 WebCore::applyCommand
 WebCore::executeInsertOrderedList
 WebCore::Editor::Command::execute
 WebCore::Document::execCommand
 WebCore::DocumentInternal::execCommandCallback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168517</commentid>
    <comment_count>1</comment_count>
    <who name="Berend-Jan Wever">skylined</who>
    <bug_when>2009-12-03 13:08:33 -0800</bug_when>
    <thetext>Added online repro.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168597</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-12-03 17:03:41 -0800</bug_when>
    <thetext>&lt;rdar://problem/7442973&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181114</commentid>
    <comment_count>3</comment_count>
      <attachid>46645</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-01-14 23:46:25 -0800</bug_when>
    <thetext>Created attachment 46645
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181117</commentid>
    <comment_count>4</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-01-14 23:59:59 -0800</bug_when>
    <thetext>Here&apos;s what&apos;s happening:

insertorderedlist works by taking each paragraph and indenting them one by one.  It indents a paragraph by creating the new list item and moving the paragraph from the old location to under the new list item.  When moving a paragraph, it puts a placeholder near the old location, moves the paragraph to the new location, then tries to clean up the placeholder and placeholder&apos;s parent node.

When we delete a paragraph from the old location, we call DeleteSelectionCommand::calculateTypingStyleAfterDelete.  This can call applyStyle(), which can move our endingSelection().  Unfortunately, we need the endingSelection() position for removing the placeholder near the old location.  This can result in getting the wrong placeholder which causes us to delete the wrong nodes.

Specifically, it&apos;s the text-align and display style on the div that causes applyStyle to be called which leads to this crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181118</commentid>
    <comment_count>5</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-01-15 00:02:32 -0800</bug_when>
    <thetext>Oh, one more thing:  This caused an extra node to be indented in a different layout test: editing/execCommand/19087.html (added here: https://bugs.webkit.org/show_bug.cgi?id=19087 ).  I&apos;m not entirely sure why that&apos;s happening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181322</commentid>
    <comment_count>6</comment_count>
      <attachid>46645</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2010-01-15 12:40:32 -0800</bug_when>
    <thetext>Comment on attachment 46645
Patch

&gt; diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
&gt; index 52b75bc..5ebd638 100644
&gt; --- a/LayoutTests/ChangeLog
&gt; +++ b/LayoutTests/ChangeLog
&gt; @@ -1,3 +1,14 @@
&gt; +2010-01-14  Tony Chang  &lt;tony@chromium.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Editing crash when inserting a list.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=32131
&gt; +
&gt; +        * editing/execCommand/19087-expected.txt:
&gt; +        * editing/execCommand/insert-ordered-list-expected.txt: Added.
&gt; +        * editing/execCommand/insert-ordered-list.html: Added.
&gt; +
&gt;  2010-01-13  Kent Hansen  &lt;kent.hansen@nokia.com&gt;
&gt;  
&gt;          Reviewed by Oliver Hunt.
&gt; diff --git a/LayoutTests/editing/execCommand/19087-expected.txt b/LayoutTests/editing/execCommand/19087-expected.txt
&gt; index 3211e80..391e821 100644
&gt; --- a/LayoutTests/editing/execCommand/19087-expected.txt
&gt; +++ b/LayoutTests/editing/execCommand/19087-expected.txt
&gt; @@ -5,3 +5,4 @@ This tests for a crash when indenting a particular selection that contains a blo
&gt;  
&gt;  
&gt;  
&gt; +
&gt; diff --git a/LayoutTests/editing/execCommand/insert-ordered-list-expected.txt b/LayoutTests/editing/execCommand/insert-ordered-list-expected.txt
&gt; new file mode 100644
&gt; index 0000000..7997d03
&gt; --- /dev/null
&gt; +++ b/LayoutTests/editing/execCommand/insert-ordered-list-expected.txt
&gt; @@ -0,0 +1,3 @@
&gt; +SUCCESS
&gt; +text
&gt; +
&gt; diff --git a/LayoutTests/editing/execCommand/insert-ordered-list.html b/LayoutTests/editing/execCommand/insert-ordered-list.html
&gt; new file mode 100644
&gt; index 0000000..f2d2df0
&gt; --- /dev/null
&gt; +++ b/LayoutTests/editing/execCommand/insert-ordered-list.html
&gt; @@ -0,0 +1,24 @@
&gt; +&lt;BODY&gt;
&gt; +&lt;u&gt;
&gt; +  &lt;img&gt;&lt;br&gt;
&gt; +  &lt;div&gt;
&gt; +  &lt;ul&gt;
&gt; +    &lt;li&gt;
&gt; +      &lt;span&gt;&lt;u&gt;
&gt; +        &lt;div style=&quot;text-align:right; display: inline;&quot;&gt;
&gt; +          &lt;span&gt;&lt;u&gt;text&lt;/u&gt;&lt;/span&gt;
&gt; +        &lt;/div&gt;
&gt; +      &lt;/u&gt;&lt;/span&gt;
&gt; +    &lt;/li&gt;
&gt; +  &lt;/ul&gt;
&gt; +  &lt;/div&gt;
&gt; +&lt;/u&gt;
&gt; +&lt;/BODY&gt;
&gt; +&lt;SCRIPT&gt;
&gt; +  if (window.layoutTestController)
&gt; +      layoutTestController.dumpAsText();
&gt; +  document.designMode = &quot;on&quot;;
&gt; +  document.execCommand(&quot;selectall&quot;);
&gt; +  document.execCommand(&quot;insertorderedlist&quot;);
&gt; +  document.getElementsByTagName(&apos;u&apos;)[0].innerHTML = &apos;SUCCESS&apos;;
&gt; +&lt;/SCRIPT&gt;
&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; index 8d01b57..86086ab 100644
&gt; --- a/WebCore/ChangeLog
&gt; +++ b/WebCore/ChangeLog
&gt; @@ -1,3 +1,20 @@
&gt; +2010-01-14  Tony Chang  &lt;tony@chromium.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=32131
&gt; +        Editing crash when trying to insert an ordered list.
&gt; +        While moving paragraphs that have been added to the new list,
&gt; +        we lose the position of the placeholder &lt;br&gt; causing us to delete
&gt; +        a bunch of nodes we don&apos;t mean to delete.
&gt; +
&gt; +        Test: editing/execCommand/insert-ordered-list.html
&gt; +
&gt; +        * editing/CompositeEditCommand.cpp:
&gt; +        (WebCore::CompositeEditCommand::moveParagraphs):
&gt; +        * editing/DeleteSelectionCommand.cpp:
&gt; +        (WebCore::DeleteSelectionCommand::calculateTypingStyleAfterDelete):
&gt; +
&gt;  2010-01-13  Gavin Barraclough  &lt;barraclough@apple.com&gt;
&gt;  
&gt;          Reviewed by Oliver Hunt.
&gt; diff --git a/WebCore/editing/CompositeEditCommand.cpp b/WebCore/editing/CompositeEditCommand.cpp
&gt; index e9b6971..c69e84a 100644
&gt; --- a/WebCore/editing/CompositeEditCommand.cpp
&gt; +++ b/WebCore/editing/CompositeEditCommand.cpp
&gt; @@ -946,10 +946,10 @@ void CompositeEditCommand::moveParagraphs(const VisiblePosition&amp; startOfParagrap
&gt;      
&gt;      setEndingSelection(VisibleSelection(start, end, DOWNSTREAM));
&gt;      deleteSelection(false, false, false, false);
&gt; -
&gt;      ASSERT(destination.deepEquivalent().node()-&gt;inDocument());
&gt;  
&gt;      cleanupAfterDeletion();
&gt; +    ASSERT(destination.deepEquivalent().node()-&gt;inDocument());
&gt;  

I dont&apos; understand why you moved the ASSERT here. In moveparagraph destination should always be valid after deleteSelection, because destination represents the
new location to move to and deleteSelection only affects the old stuff.

&gt;      // Add a br if pruning an empty block level element caused a collapse. For example:
&gt;      // foo^
&gt; @@ -971,6 +971,7 @@ void CompositeEditCommand::moveParagraphs(const VisiblePosition&amp; startOfParagrap
&gt;      destinationIndex = TextIterator::rangeLength(startToDestinationRange.get(), true);
&gt;      
&gt;      setEndingSelection(destination);
&gt; +    ASSERT(endingSelection().isCaretOrRange());
&gt;      applyCommandToComposite(ReplaceSelectionCommand::create(document(), fragment, true, false, !preserveStyle, false, true));
&gt;      
&gt;      // If the selection is in an empty paragraph, restore styles from the old empty paragraph to the new empty paragraph.
&gt; diff --git a/WebCore/editing/DeleteSelectionCommand.cpp b/WebCore/editing/DeleteSelectionCommand.cpp
&gt; index f07f038..3dd1490 100644
&gt; --- a/WebCore/editing/DeleteSelectionCommand.cpp
&gt; +++ b/WebCore/editing/DeleteSelectionCommand.cpp
&gt; @@ -688,6 +688,8 @@ void DeleteSelectionCommand::calculateTypingStyleAfterDelete()
&gt;          applyStyle(m_typingStyle.get(), EditActionUnspecified);
&gt;          // applyStyle can destroy the placeholder that was at m_endingPosition if it needs to 
&gt;          // move it, but it will set an endingSelection() at [movedPlaceholder, 0] if it does so.
&gt; +        // We don&apos;t want to move endingSelection(), because another command might be relying on it.
&gt; +        setEndingSelection(visibleEnd);

I believe the 19087.html is failing because you are moving the end selection in a case where it is not necessary.
You should try to find out why this test fails, I don&apos;t think you should just re-baseline the test without an explanation.

&gt;          m_endingPosition = endingSelection().start();
&gt;          m_typingStyle = 0;
&gt;      }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181715</commentid>
    <comment_count>7</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-01-17 20:44:47 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; --- a/WebCore/editing/CompositeEditCommand.cpp
&gt; &gt; +++ b/WebCore/editing/CompositeEditCommand.cpp
&gt; &gt; @@ -946,10 +946,10 @@ void CompositeEditCommand::moveParagraphs(const VisiblePosition&amp; startOfParagrap
&gt; &gt;      
&gt; &gt;      setEndingSelection(VisibleSelection(start, end, DOWNSTREAM));
&gt; &gt;      deleteSelection(false, false, false, false);
&gt; &gt; -
&gt; &gt;      ASSERT(destination.deepEquivalent().node()-&gt;inDocument());
&gt; &gt;  
&gt; &gt;      cleanupAfterDeletion();
&gt; &gt; +    ASSERT(destination.deepEquivalent().node()-&gt;inDocument());
&gt; &gt;  
&gt; 
&gt; I dont&apos; understand why you moved the ASSERT here. In moveparagraph destination
&gt; should always be valid after deleteSelection, because destination represents
&gt; the
&gt; new location to move to and deleteSelection only affects the old stuff.

I was removing a blank line and adding another ASSERT.  The destination needs
to be valid after the cleanup so we know where to insert paragraph into.


&gt; I believe the 19087.html is failing because you are moving the end selection in
&gt; a case where it is not necessary.
&gt; You should try to find out why this test fails, I don&apos;t think you should just
&gt; re-baseline the test without an explanation.

You&apos;re right, the bug is lower: it&apos;s in applyStyle.  In
ApplyStyleCommand::applyBlockStyle, it tries to save the selection, move the
paragraphs, then restore the selection.  In this test case, it fails to restore
the selection to the right place.  It looks like this might be a bug in
TextIterator::rangeLength and TextIterator::rangeFromLocationAndLength not
agreeing on how to restore a range?  I&apos;m not sure what rangeLength is supposed
to represent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181932</commentid>
    <comment_count>8</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2010-01-18 11:04:27 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; &gt; --- a/WebCore/editing/CompositeEditCommand.cpp
&gt; &gt; &gt; +++ b/WebCore/editing/CompositeEditCommand.cpp
&gt; &gt; &gt; @@ -946,10 +946,10 @@ void CompositeEditCommand::moveParagraphs(const VisiblePosition&amp; startOfParagrap
&gt; &gt; &gt;      
&gt; &gt; &gt;      setEndingSelection(VisibleSelection(start, end, DOWNSTREAM));
&gt; &gt; &gt;      deleteSelection(false, false, false, false);
&gt; &gt; &gt; -
&gt; &gt; &gt;      ASSERT(destination.deepEquivalent().node()-&gt;inDocument());
&gt; &gt; &gt;  
&gt; &gt; &gt;      cleanupAfterDeletion();
&gt; &gt; &gt; +    ASSERT(destination.deepEquivalent().node()-&gt;inDocument());
&gt; &gt; &gt;  
&gt; &gt; 
&gt; &gt; I dont&apos; understand why you moved the ASSERT here. In moveparagraph destination
&gt; &gt; should always be valid after deleteSelection, because destination represents
&gt; &gt; the
&gt; &gt; new location to move to and deleteSelection only affects the old stuff.
&gt; 
&gt; I was removing a blank line and adding another ASSERT.  The destination needs
&gt; to be valid after the cleanup so we know where to insert paragraph into.
&gt; 
&gt; 
The point I&apos;m trying to make is that it is not necessary to move the ASSERT.
Destination is a position that outside the selection being deleted. The ASSERT should verify that there is no overlap between destination and the selection to be deleted. We should not make unnecessary code changes.

&gt; &gt; I believe the 19087.html is failing because you are moving the end selection in
&gt; &gt; a case where it is not necessary.
&gt; &gt; You should try to find out why this test fails, I don&apos;t think you should just
&gt; &gt; re-baseline the test without an explanation.
&gt; 
&gt; You&apos;re right, the bug is lower: it&apos;s in applyStyle.  In
&gt; ApplyStyleCommand::applyBlockStyle, it tries to save the selection, move the
&gt; paragraphs, then restore the selection.  In this test case, it fails to restore
&gt; the selection to the right place.  It looks like this might be a bug in
&gt; TextIterator::rangeLength and TextIterator::rangeFromLocationAndLength not
&gt; agreeing on how to restore a range?  I&apos;m not sure what rangeLength is supposed
&gt; to represent.
I don&apos;t agree. The test is failing because one line is left behind and I believe it has to do with moving the end selection. TextIterator computes correctly the position starting from an offset expressed in terms of number of visible characters. It could be off only if a layout is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182132</commentid>
    <comment_count>9</comment_count>
      <attachid>46884</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-01-18 22:02:52 -0800</bug_when>
    <thetext>Created attachment 46884
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182134</commentid>
    <comment_count>10</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-01-18 22:04:24 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #6)
&gt; &gt; &gt; &gt; --- a/WebCore/editing/CompositeEditCommand.cpp
&gt; &gt; &gt; &gt; +++ b/WebCore/editing/CompositeEditCommand.cpp
&gt; &gt; &gt; &gt; @@ -946,10 +946,10 @@ void CompositeEditCommand::moveParagraphs(const VisiblePosition&amp; startOfParagrap
&gt; &gt; &gt; &gt;      
&gt; &gt; &gt; &gt;      setEndingSelection(VisibleSelection(start, end, DOWNSTREAM));
&gt; &gt; &gt; &gt;      deleteSelection(false, false, false, false);
&gt; &gt; &gt; &gt; -
&gt; &gt; &gt; &gt;      ASSERT(destination.deepEquivalent().node()-&gt;inDocument());
&gt; &gt; &gt; &gt;  
&gt; &gt; &gt; &gt;      cleanupAfterDeletion();
&gt; &gt; &gt; &gt; +    ASSERT(destination.deepEquivalent().node()-&gt;inDocument());
&gt; &gt; &gt; &gt;  
&gt; &gt; &gt; 
&gt; &gt; &gt; I dont&apos; understand why you moved the ASSERT here. In moveparagraph destination
&gt; &gt; &gt; should always be valid after deleteSelection, because destination represents
&gt; &gt; &gt; the
&gt; &gt; &gt; new location to move to and deleteSelection only affects the old stuff.
&gt; &gt; 
&gt; &gt; I was removing a blank line and adding another ASSERT.  The destination needs
&gt; &gt; to be valid after the cleanup so we know where to insert paragraph into.
&gt; &gt; 
&gt; &gt; 
&gt; The point I&apos;m trying to make is that it is not necessary to move the ASSERT.
&gt; Destination is a position that outside the selection being deleted. The ASSERT
&gt; should verify that there is no overlap between destination and the selection to
&gt; be deleted. We should not make unnecessary code changes.

Ok, I put back the blank line.

&gt; &gt; &gt; I believe the 19087.html is failing because you are moving the end selection in
&gt; &gt; &gt; a case where it is not necessary.
&gt; &gt; &gt; You should try to find out why this test fails, I don&apos;t think you should just
&gt; &gt; &gt; re-baseline the test without an explanation.
&gt; &gt; 
&gt; &gt; You&apos;re right, the bug is lower: it&apos;s in applyStyle.  In
&gt; &gt; ApplyStyleCommand::applyBlockStyle, it tries to save the selection, move the
&gt; &gt; paragraphs, then restore the selection.  In this test case, it fails to restore
&gt; &gt; the selection to the right place.  It looks like this might be a bug in
&gt; &gt; TextIterator::rangeLength and TextIterator::rangeFromLocationAndLength not
&gt; &gt; agreeing on how to restore a range?  I&apos;m not sure what rangeLength is supposed
&gt; &gt; to represent.
&gt; I don&apos;t agree. The test is failing because one line is left behind and I
&gt; believe it has to do with moving the end selection. TextIterator computes
&gt; correctly the position starting from an offset expressed in terms of number of
&gt; visible characters. It could be off only if a layout is needed.

I was agreeing with your assessment that moving the end selection was wrong.  I&apos;ve posted a new patch that works around the bug in TextIterator::rangeFromLocationAndLength.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186594</commentid>
    <comment_count>11</comment_count>
      <attachid>46884</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-01 15:24:39 -0800</bug_when>
    <thetext>Comment on attachment 46884
Patch

If you&apos;re getting a position from a Range, can&apos;t you use the non-deprecated offset lookup?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186714</commentid>
    <comment_count>12</comment_count>
      <attachid>47885</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-02-01 17:19:36 -0800</bug_when>
    <thetext>Created attachment 47885
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186718</commentid>
    <comment_count>13</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-02-01 17:21:10 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 46884 [details])
&gt; If you&apos;re getting a position from a Range, can&apos;t you use the non-deprecated
&gt; offset lookup?

Yes, you are correct.  New patch uploaded using the range offset directly.

For reference, the existing use of deprecated offset is bug 25193.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190366</commentid>
    <comment_count>14</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-02-14 19:41:31 -0800</bug_when>
    <thetext>Justin: It looks like you were the original author of this code.  Do you have time to review this?  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197399</commentid>
    <comment_count>15</comment_count>
      <attachid>47885</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-08 16:50:26 -0800</bug_when>
    <thetext>Comment on attachment 47885
Patch

This change is a bit out of my area, but the change looks plausible and Tony has addressed all of Enrica and Eric&apos;s comments.

Sorry for the delay in reviewing your patch Tony.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197435</commentid>
    <comment_count>16</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-03-08 20:32:23 -0800</bug_when>
    <thetext>Committed r55705: &lt;http://trac.webkit.org/changeset/55705&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>44266</attachid>
            <date>2009-12-03 13:05:24 -0800</date>
            <delta_ts>2009-12-03 13:05:24 -0800</delta_ts>
            <desc>Repro</desc>
            <filename>repro.html</filename>
            <type>text/html</type>
            <size>583</size>
            <attacher name="Berend-Jan Wever">skylined</attacher>
            
              <data encoding="base64">PEJPRFk+PC9CT0RZPg0KPFNDUklQVD4NCiAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlNlbGVjdEFs
bCIpOw0KICBkb2N1bWVudC5kZXNpZ25Nb2RlID0gIm9uIjsNCiAgZG9jdW1lbnQuZXhlY0NvbW1h
bmQoInVuZGVybGluZSIpOw0KICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VW5vcmRlcmVk
TGlzdCIpOw0KICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0SW1hZ2UiKTsNCiAgZG9jdW1l
bnQuZXhlY0NvbW1hbmQoIkluc2VydExpbmVCcmVhayIpOw0KICBkb2N1bWVudC5leGVjQ29tbWFu
ZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAzNDM1OTczODM2NSk7DQogIGRvY3VtZW50LmV4ZWNDb21t
YW5kKCJKdXN0aWZ5UmlnaHQiKTsNCiAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIk91dGRlbnQiKTsN
CiAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoImluc2VydHVub3JkZXJlZGxpc3QiKTsNCiAgZG9jdW1l
bnQuZXhlY0NvbW1hbmQoIkp1c3RpZnlDZW50ZXIiKTsNCiAgZG9jdW1lbnQuZXhlY0NvbW1hbmQo
InNlbGVjdGFsbCIpOw0KICBkb2N1bWVudC5leGVjQ29tbWFuZCgiaW5zZXJ0b3JkZXJlZGxpc3Qi
KTsNCjwvU0NSSVBUPg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46645</attachid>
            <date>2010-01-14 23:46:25 -0800</date>
            <delta_ts>2010-01-17 20:45:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-32131-20100115164623.patch</filename>
            <type>text/plain</type>
            <size>5072</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1MmI3NWJjLi41ZWJkNjM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDEt
MTQgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFZGl0aW5nIGNyYXNoIHdoZW4gaW5zZXJ0aW5n
IGEgbGlzdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMyMTMxCisKKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kLzE5MDg3LWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1vcmRlcmVkLWxpc3QtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1v
cmRlcmVkLWxpc3QuaHRtbDogQWRkZWQuCisKIDIwMTAtMDEtMTMgIEtlbnQgSGFuc2VuICA8a2Vu
dC5oYW5zZW5Abm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50Lgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC8xOTA4Ny1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kLzE5MDg3LWV4cGVjdGVkLnR4
dAppbmRleCAzMjExZTgwLi4zOTFlODIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L2V4ZWNDb21tYW5kLzE5MDg3LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L2V4ZWNDb21tYW5kLzE5MDg3LWV4cGVjdGVkLnR4dApAQCAtNSwzICs1LDQgQEAgVGhpcyB0ZXN0
cyBmb3IgYSBjcmFzaCB3aGVuIGluZGVudGluZyBhIHBhcnRpY3VsYXIgc2VsZWN0aW9uIHRoYXQg
Y29udGFpbnMgYSBibG8KIAogCiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9l
eGVjQ29tbWFuZC9pbnNlcnQtb3JkZXJlZC1saXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0LW9yZGVyZWQtbGlzdC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk5N2QwMwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0LW9yZGVyZWQtbGlzdC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitTVUNDRVNTCit0ZXh0CisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0LW9yZGVyZWQtbGlzdC5odG1s
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbnNlcnQtb3JkZXJlZC1saXN0Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjJkMmRmMAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0LW9yZGVyZWQt
bGlzdC5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxCT0RZPgorPHU+CisgIDxpbWc+PGJyPgorICA8
ZGl2PgorICA8dWw+CisgICAgPGxpPgorICAgICAgPHNwYW4+PHU+CisgICAgICAgIDxkaXYgc3R5
bGU9InRleHQtYWxpZ246cmlnaHQ7IGRpc3BsYXk6IGlubGluZTsiPgorICAgICAgICAgIDxzcGFu
Pjx1PnRleHQ8L3U+PC9zcGFuPgorICAgICAgICA8L2Rpdj4KKyAgICAgIDwvdT48L3NwYW4+Cisg
ICAgPC9saT4KKyAgPC91bD4KKyAgPC9kaXY+Cis8L3U+Cis8L0JPRFk+Cis8U0NSSVBUPgorICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICBkb2N1bWVudC5kZXNpZ25Nb2RlID0gIm9uIjsKKyAgZG9jdW1l
bnQuZXhlY0NvbW1hbmQoInNlbGVjdGFsbCIpOworICBkb2N1bWVudC5leGVjQ29tbWFuZCgiaW5z
ZXJ0b3JkZXJlZGxpc3QiKTsKKyAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3UnKVsw
XS5pbm5lckhUTUwgPSAnU1VDQ0VTUyc7Cis8L1NDUklQVD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGQwMWI1Ny4uODYwODZhYiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxMC0wMS0xNCAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjEzMQorICAgICAgICBFZGl0aW5nIGNy
YXNoIHdoZW4gdHJ5aW5nIHRvIGluc2VydCBhbiBvcmRlcmVkIGxpc3QuCisgICAgICAgIFdoaWxl
IG1vdmluZyBwYXJhZ3JhcGhzIHRoYXQgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSBuZXcgbGlzdCwK
KyAgICAgICAgd2UgbG9zZSB0aGUgcG9zaXRpb24gb2YgdGhlIHBsYWNlaG9sZGVyIDxicj4gY2F1
c2luZyB1cyB0byBkZWxldGUKKyAgICAgICAgYSBidW5jaCBvZiBub2RlcyB3ZSBkb24ndCBtZWFu
IHRvIGRlbGV0ZS4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1v
cmRlcmVkLWxpc3QuaHRtbAorCisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFn
cmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpjYWxjdWxhdGVUeXBpbmdT
dHlsZUFmdGVyRGVsZXRlKToKKwogMjAxMC0wMS0xMyAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJy
YWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvV2Vi
Q29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCBlOWI2OTcxLi5jNjll
ODRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
CisrKyBiL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTk0Niwx
MCArOTQ2LDEwIEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFncmFwCiAgICAgCiAgICAgc2V0RW5kaW5n
U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oc3RhcnQsIGVuZCwgRE9XTlNUUkVBTSkpOwogICAg
IGRlbGV0ZVNlbGVjdGlvbihmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7Ci0KICAgICBBU1NF
UlQoZGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCktPmluRG9jdW1lbnQoKSk7CiAK
ICAgICBjbGVhbnVwQWZ0ZXJEZWxldGlvbigpOworICAgIEFTU0VSVChkZXN0aW5hdGlvbi5kZWVw
RXF1aXZhbGVudCgpLm5vZGUoKS0+aW5Eb2N1bWVudCgpKTsKIAogICAgIC8vIEFkZCBhIGJyIGlm
IHBydW5pbmcgYW4gZW1wdHkgYmxvY2sgbGV2ZWwgZWxlbWVudCBjYXVzZWQgYSBjb2xsYXBzZS4g
Rm9yIGV4YW1wbGU6CiAgICAgLy8gZm9vXgpAQCAtOTcxLDYgKzk3MSw3IEBAIHZvaWQgQ29tcG9z
aXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3Rh
cnRPZlBhcmFncmFwCiAgICAgZGVzdGluYXRpb25JbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VM
ZW5ndGgoc3RhcnRUb0Rlc3RpbmF0aW9uUmFuZ2UuZ2V0KCksIHRydWUpOwogICAgIAogICAgIHNl
dEVuZGluZ1NlbGVjdGlvbihkZXN0aW5hdGlvbik7CisgICAgQVNTRVJUKGVuZGluZ1NlbGVjdGlv
bigpLmlzQ2FyZXRPclJhbmdlKCkpOwogICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUoZG9jdW1lbnQoKSwgZnJhZ21lbnQsIHRydWUsIGZh
bHNlLCAhcHJlc2VydmVTdHlsZSwgZmFsc2UsIHRydWUpKTsKICAgICAKICAgICAvLyBJZiB0aGUg
c2VsZWN0aW9uIGlzIGluIGFuIGVtcHR5IHBhcmFncmFwaCwgcmVzdG9yZSBzdHlsZXMgZnJvbSB0
aGUgb2xkIGVtcHR5IHBhcmFncmFwaCB0byB0aGUgbmV3IGVtcHR5IHBhcmFncmFwaC4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1dlYkNv
cmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCBmMDdmMDM4Li4zZGQx
NDkwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5j
cHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC02
ODgsNiArNjg4LDggQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpjYWxjdWxhdGVUeXBp
bmdTdHlsZUFmdGVyRGVsZXRlKCkKICAgICAgICAgYXBwbHlTdHlsZShtX3R5cGluZ1N0eWxlLmdl
dCgpLCBFZGl0QWN0aW9uVW5zcGVjaWZpZWQpOwogICAgICAgICAvLyBhcHBseVN0eWxlIGNhbiBk
ZXN0cm95IHRoZSBwbGFjZWhvbGRlciB0aGF0IHdhcyBhdCBtX2VuZGluZ1Bvc2l0aW9uIGlmIGl0
IG5lZWRzIHRvIAogICAgICAgICAvLyBtb3ZlIGl0LCBidXQgaXQgd2lsbCBzZXQgYW4gZW5kaW5n
U2VsZWN0aW9uKCkgYXQgW21vdmVkUGxhY2Vob2xkZXIsIDBdIGlmIGl0IGRvZXMgc28uCisgICAg
ICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gbW92ZSBlbmRpbmdTZWxlY3Rpb24oKSwgYmVjYXVzZSBh
bm90aGVyIGNvbW1hbmQgbWlnaHQgYmUgcmVseWluZyBvbiBpdC4KKyAgICAgICAgc2V0RW5kaW5n
U2VsZWN0aW9uKHZpc2libGVFbmQpOwogICAgICAgICBtX2VuZGluZ1Bvc2l0aW9uID0gZW5kaW5n
U2VsZWN0aW9uKCkuc3RhcnQoKTsKICAgICAgICAgbV90eXBpbmdTdHlsZSA9IDA7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46884</attachid>
            <date>2010-01-18 22:02:52 -0800</date>
            <delta_ts>2010-02-01 17:19:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-32131-20100119150250.patch</filename>
            <type>text/plain</type>
            <size>5602</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjOGMyOGQzLi40NDYzYWQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDEt
MTggIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzIxMzEKKyAgICAgICAgV29yayBhcm91bmQgYSBjcmFzaCB3aGVuIGluc2Vy
dGluZyBhbiBvcmRlcmVkIGxpc3QuICBUaGlzIHdhcyBjYXVzZWQKKyAgICAgICAgYnkgaW5jb3Jy
ZWN0IGxvZ2ljIHdoZW4gdHJ5aW5nIHRvIHJlc3RvcmUgYSByYW5nZSBmcm9tIGEgbG9jYXRpb24u
CisgICAgICAgIFdlIGNvbXB1dGUgdGhlIG9mZnNldCB1c2luZyBUZXh0SXRlcmF0b3IsIGJ1dCB3
ZXJlIHNvbWV0aW1lcyB1c2luZworICAgICAgICBWaXNpYmxlUG9zaXRpb246Om5leHQoKSB0byBp
dGVyYXRlIGluc3RlYWQuCisKKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1v
cmRlcmVkLWxpc3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWND
b21tYW5kL2luc2VydC1vcmRlcmVkLWxpc3QuaHRtbDogQWRkZWQuCisKIDIwMTAtMDEtMTggIERh
bmllbCBCYXRlcyAgPGRiYXRlc0B3ZWJraXQub3JnPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzA4OQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZWRpdGluZy9leGVjQ29tbWFuZC9pbnNlcnQtb3JkZXJlZC1saXN0LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0LW9yZGVyZWQtbGlzdC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk5N2QwMwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0LW9yZGVy
ZWQtbGlzdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitTVUNDRVNTCit0ZXh0CisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0LW9yZGVyZWQt
bGlzdC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbnNlcnQtb3JkZXJl
ZC1saXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc1NWI1Zgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0
LW9yZGVyZWQtbGlzdC5odG1sCkBAIC0wLDAgKzEsMjMgQEAKKzxCT0RZIGNvbnRlbnRFZGl0YWJs
ZT0idHJ1ZSI+Cis8dT4KKyAgPGltZz48YnI+CisgIDxkaXY+CisgIDx1bD4KKyAgICA8bGk+Cisg
ICAgICA8c3Bhbj48dT4KKyAgICAgICAgPGRpdiBzdHlsZT0idGV4dC1hbGlnbjpyaWdodDsgZGlz
cGxheTogaW5saW5lOyI+CisgICAgICAgICAgPHNwYW4+PHU+dGV4dDwvdT48L3NwYW4+CisgICAg
ICAgIDwvZGl2PgorICAgICAgPC91Pjwvc3Bhbj4KKyAgICA8L2xpPgorICA8L3VsPgorICA8L2Rp
dj4KKzwvdT4KKzwvQk9EWT4KKzxTQ1JJUFQ+CisgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgIGRvY3Vt
ZW50LmV4ZWNDb21tYW5kKCJzZWxlY3RhbGwiKTsKKyAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoImlu
c2VydG9yZGVyZWRsaXN0Iik7CisgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd1Jylb
MF0uaW5uZXJIVE1MID0gJ1NVQ0NFU1MnOworPC9TQ1JJUFQ+CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU3NGQ3NTguLjBjZTZmYmIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTAtMDEtMTggIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIxMzEKKyAgICAgICAgQ3Jhc2ggd2hl
biBpbnNlcnRpbmcgYW4gb3JkZXJlZCBsaXN0LgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvZXhl
Y0NvbW1hbmQvaW5zZXJ0LW9yZGVyZWQtbGlzdC5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL0Nv
bXBvc2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRD
b21tYW5kOjptb3ZlUGFyYWdyYXBocyk6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFu
ZExlbmd0aCk6CisKIDIwMTAtMDEtMTggIERhbmllbCBCYXRlcyAgPGRiYXRlc0B3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9Db21w
b3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggZTliNjk3MS4uZmZmNzZhNiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2Vk
aXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCkBAIC05NTAsNiArOTUwLDcgQEAgdm9pZCBD
b21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBzdGFydE9mUGFyYWdyYXAKICAgICBBU1NFUlQoZGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQo
KS5ub2RlKCktPmluRG9jdW1lbnQoKSk7CiAKICAgICBjbGVhbnVwQWZ0ZXJEZWxldGlvbigpOwor
ICAgIEFTU0VSVChkZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLm5vZGUoKS0+aW5Eb2N1bWVu
dCgpKTsKIAogICAgIC8vIEFkZCBhIGJyIGlmIHBydW5pbmcgYW4gZW1wdHkgYmxvY2sgbGV2ZWwg
ZWxlbWVudCBjYXVzZWQgYSBjb2xsYXBzZS4gRm9yIGV4YW1wbGU6CiAgICAgLy8gZm9vXgpAQCAt
OTcxLDYgKzk3Miw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhz
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFncmFwCiAgICAgZGVzdGluYXRpb25J
bmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoc3RhcnRUb0Rlc3RpbmF0aW9uUmFuZ2Uu
Z2V0KCksIHRydWUpOwogICAgIAogICAgIHNldEVuZGluZ1NlbGVjdGlvbihkZXN0aW5hdGlvbik7
CisgICAgQVNTRVJUKGVuZGluZ1NlbGVjdGlvbigpLmlzQ2FyZXRPclJhbmdlKCkpOwogICAgIGFw
cGx5Q29tbWFuZFRvQ29tcG9zaXRlKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUoZG9j
dW1lbnQoKSwgZnJhZ21lbnQsIHRydWUsIGZhbHNlLCAhcHJlc2VydmVTdHlsZSwgZmFsc2UsIHRy
dWUpKTsKICAgICAKICAgICAvLyBJZiB0aGUgc2VsZWN0aW9uIGlzIGluIGFuIGVtcHR5IHBhcmFn
cmFwaCwgcmVzdG9yZSBzdHlsZXMgZnJvbSB0aGUgb2xkIGVtcHR5IHBhcmFncmFwaCB0byB0aGUg
bmV3IGVtcHR5IHBhcmFncmFwaC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRl
cmF0b3IuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggOTIzZjUz
Ny4uNzE3ZmNmZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAK
KysrIGIvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTIwMzcsMTYgKzIwMzcs
MjUgQEAgUGFzc1JlZlB0cjxSYW5nZT4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFu
ZExlbmd0aChFbGVtZW50KiBzY29wZSwgaW50IHIKICAgICAgICAgCiAgICAgICAgIC8vIEZpeCB0
ZXh0UnVuUmFuZ2UtPmVuZFBvc2l0aW9uKCksIGJ1dCBvbmx5IGlmIGZvdW5kU3RhcnQgfHwgZm91
bmRFbmQsIGJlY2F1c2UgaXQgaXMgb25seQogICAgICAgICAvLyBpbiB0aG9zZSBjYXNlcyB0aGF0
IHRleHRSdW5SYW5nZSBpcyB1c2VkLgotICAgICAgICBpZiAoZm91bmRTdGFydCB8fCBmb3VuZEVu
ZCkgeworICAgICAgICBpZiAoZm91bmRFbmQpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlz
IGlzIGEgd29ya2Fyb3VuZCBmb3IgdGhlIGZhY3QgdGhhdCB0aGUgZW5kIG9mIGEgcnVuIGlzIG9m
dGVuIGF0IHRoZSB3cm9uZwogICAgICAgICAgICAgLy8gcG9zaXRpb24gZm9yIGVtaXR0ZWQgJ1xu
J3MuCiAgICAgICAgICAgICBpZiAobGVuID09IDEgJiYgaXQuY2hhcmFjdGVycygpWzBdID09ICdc
bicpIHsKLSAgICAgICAgICAgICAgICBQb3NpdGlvbiBydW5TdGFydCA9IHRleHRSdW5SYW5nZS0+
c3RhcnRQb3NpdGlvbigpOwotICAgICAgICAgICAgICAgIFBvc2l0aW9uIHJ1bkVuZCA9IFZpc2li
bGVQb3NpdGlvbihydW5TdGFydCkubmV4dCgpLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKHJ1bkVuZC5pc05vdE51bGwoKSkgeworICAgICAgICAgICAgICAgIHNjb3BlLT5k
b2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKKyAgICAg
ICAgICAgICAgICBpdC5hZHZhbmNlKCk7CisgICAgICAgICAgICAgICAgaWYgKCFpdC5hdEVuZCgp
KSB7CisgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uIHAgPSBpdC5yYW5nZSgpLT5zdGFydFBv
c2l0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
ICAgICAgICAgICAgICAgICB0ZXh0UnVuUmFuZ2UtPnNldEVuZChydW5FbmQubm9kZSgpLCBydW5F
bmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgZWMpOworICAgICAgICAgICAgICAgICAgICB0
ZXh0UnVuUmFuZ2UtPnNldEVuZChwLm5vZGUoKSwgcC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgp
LCBlYyk7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uIHJ1blN0YXJ0ID0gdGV4dFJ1
blJhbmdlLT5zdGFydFBvc2l0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uIHJ1
bkVuZCA9IFZpc2libGVQb3NpdGlvbihydW5TdGFydCkubmV4dCgpLmRlZXBFcXVpdmFsZW50KCk7
CisgICAgICAgICAgICAgICAgICAgIGlmIChydW5FbmQuaXNOb3ROdWxsKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICAgICAgICAgICAg
ICAgICAgdGV4dFJ1blJhbmdlLT5zZXRFbmQocnVuRW5kLm5vZGUoKSwgcnVuRW5kLmRlcHJlY2F0
ZWRFZGl0aW5nT2Zmc2V0KCksIGVjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCgh
ZWMpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogICAgICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47885</attachid>
            <date>2010-02-01 17:19:36 -0800</date>
            <delta_ts>2010-03-08 16:50:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-32131-20100202101934.patch</filename>
            <type>text/plain</type>
            <size>5593</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0YzVmYzg4Li4xNjc5N2EzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDIt
MDEgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzIxMzEKKyAgICAgICAgV29yayBhcm91bmQgYSBjcmFzaCB3aGVuIGluc2Vy
dGluZyBhbiBvcmRlcmVkIGxpc3QuICBUaGlzIHdhcyBjYXVzZWQKKyAgICAgICAgYnkgaW5jb3Jy
ZWN0IGxvZ2ljIHdoZW4gdHJ5aW5nIHRvIHJlc3RvcmUgYSByYW5nZSBmcm9tIGEgbG9jYXRpb24u
CisgICAgICAgIFdlIGNvbXB1dGUgdGhlIG9mZnNldCB1c2luZyBUZXh0SXRlcmF0b3IsIGJ1dCB3
ZXJlIHNvbWV0aW1lcyB1c2luZworICAgICAgICBWaXNpYmxlUG9zaXRpb246Om5leHQoKSB0byBp
dGVyYXRlIGluc3RlYWQuCisKKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1v
cmRlcmVkLWxpc3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWND
b21tYW5kL2luc2VydC1vcmRlcmVkLWxpc3QuaHRtbDogQWRkZWQuCisKIDIwMTAtMDItMDEgIFNo
aW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvZXhlY0Nv
bW1hbmQvaW5zZXJ0LW9yZGVyZWQtbGlzdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL2V4ZWNDb21tYW5kL2luc2VydC1vcmRlcmVkLWxpc3QtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5OTdkMDMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1vcmRlcmVkLWxpc3QtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorU1VDQ0VTUwordGV4dAorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1vcmRlcmVkLWxpc3QuaHRtbCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0LW9yZGVyZWQtbGlzdC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3NTViNWYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1vcmRlcmVkLWxpc3Qu
aHRtbApAQCAtMCwwICsxLDIzIEBACis8Qk9EWSBjb250ZW50RWRpdGFibGU9InRydWUiPgorPHU+
CisgIDxpbWc+PGJyPgorICA8ZGl2PgorICA8dWw+CisgICAgPGxpPgorICAgICAgPHNwYW4+PHU+
CisgICAgICAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246cmlnaHQ7IGRpc3BsYXk6IGlubGluZTsi
PgorICAgICAgICAgIDxzcGFuPjx1PnRleHQ8L3U+PC9zcGFuPgorICAgICAgICA8L2Rpdj4KKyAg
ICAgIDwvdT48L3NwYW4+CisgICAgPC9saT4KKyAgPC91bD4KKyAgPC9kaXY+Cis8L3U+Cis8L0JP
RFk+Cis8U0NSSVBUPgorICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICBkb2N1bWVudC5leGVjQ29tbWFu
ZCgic2VsZWN0YWxsIik7CisgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJpbnNlcnRvcmRlcmVkbGlz
dCIpOworICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndScpWzBdLmlubmVySFRNTCA9
ICdTVUNDRVNTJzsKKzwvU0NSSVBUPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzNGM3NWUyLi4wZWZjMWMzIDEwMDY0NAotLS0gYS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDEwLTAyLTAxICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTMyMTMxCisgICAgICAgIENyYXNoIHdoZW4gaW5zZXJ0aW5nIGFu
IG9yZGVyZWQgbGlzdC4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL2V4ZWNDb21tYW5kL2luc2Vy
dC1vcmRlcmVkLWxpc3QuaHRtbAorCisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBh
cmFncmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgpOgorCiAy
MDEwLTAyLTAxICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBBcml5YSBIaWRheWF0LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0
Q29tbWFuZC5jcHAKaW5kZXggZTliNjk3MS4uZmZmNzZhNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvQ29t
cG9zaXRlRWRpdENvbW1hbmQuY3BwCkBAIC05NTAsNiArOTUwLDcgQEAgdm9pZCBDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9m
UGFyYWdyYXAKICAgICBBU1NFUlQoZGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCkt
PmluRG9jdW1lbnQoKSk7CiAKICAgICBjbGVhbnVwQWZ0ZXJEZWxldGlvbigpOworICAgIEFTU0VS
VChkZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLm5vZGUoKS0+aW5Eb2N1bWVudCgpKTsKIAog
ICAgIC8vIEFkZCBhIGJyIGlmIHBydW5pbmcgYW4gZW1wdHkgYmxvY2sgbGV2ZWwgZWxlbWVudCBj
YXVzZWQgYSBjb2xsYXBzZS4gRm9yIGV4YW1wbGU6CiAgICAgLy8gZm9vXgpAQCAtOTcxLDYgKzk3
Miw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFncmFwCiAgICAgZGVzdGluYXRpb25JbmRleCA9IFRl
eHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoc3RhcnRUb0Rlc3RpbmF0aW9uUmFuZ2UuZ2V0KCksIHRy
dWUpOwogICAgIAogICAgIHNldEVuZGluZ1NlbGVjdGlvbihkZXN0aW5hdGlvbik7CisgICAgQVNT
RVJUKGVuZGluZ1NlbGVjdGlvbigpLmlzQ2FyZXRPclJhbmdlKCkpOwogICAgIGFwcGx5Q29tbWFu
ZFRvQ29tcG9zaXRlKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUoZG9jdW1lbnQoKSwg
ZnJhZ21lbnQsIHRydWUsIGZhbHNlLCAhcHJlc2VydmVTdHlsZSwgZmFsc2UsIHRydWUpKTsKICAg
ICAKICAgICAvLyBJZiB0aGUgc2VsZWN0aW9uIGlzIGluIGFuIGVtcHR5IHBhcmFncmFwaCwgcmVz
dG9yZSBzdHlsZXMgZnJvbSB0aGUgb2xkIGVtcHR5IHBhcmFncmFwaCB0byB0aGUgbmV3IGVtcHR5
IHBhcmFncmFwaC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3Bw
IGIvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggOTIzZjUzNy4uYTM4NmM2
ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvV2Vi
Q29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTIwMzcsMTYgKzIwMzcsMjUgQEAgUGFz
c1JlZlB0cjxSYW5nZT4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChF
bGVtZW50KiBzY29wZSwgaW50IHIKICAgICAgICAgCiAgICAgICAgIC8vIEZpeCB0ZXh0UnVuUmFu
Z2UtPmVuZFBvc2l0aW9uKCksIGJ1dCBvbmx5IGlmIGZvdW5kU3RhcnQgfHwgZm91bmRFbmQsIGJl
Y2F1c2UgaXQgaXMgb25seQogICAgICAgICAvLyBpbiB0aG9zZSBjYXNlcyB0aGF0IHRleHRSdW5S
YW5nZSBpcyB1c2VkLgotICAgICAgICBpZiAoZm91bmRTdGFydCB8fCBmb3VuZEVuZCkgeworICAg
ICAgICBpZiAoZm91bmRFbmQpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgd29y
a2Fyb3VuZCBmb3IgdGhlIGZhY3QgdGhhdCB0aGUgZW5kIG9mIGEgcnVuIGlzIG9mdGVuIGF0IHRo
ZSB3cm9uZwogICAgICAgICAgICAgLy8gcG9zaXRpb24gZm9yIGVtaXR0ZWQgJ1xuJ3MuCiAgICAg
ICAgICAgICBpZiAobGVuID09IDEgJiYgaXQuY2hhcmFjdGVycygpWzBdID09ICdcbicpIHsKLSAg
ICAgICAgICAgICAgICBQb3NpdGlvbiBydW5TdGFydCA9IHRleHRSdW5SYW5nZS0+c3RhcnRQb3Np
dGlvbigpOwotICAgICAgICAgICAgICAgIFBvc2l0aW9uIHJ1bkVuZCA9IFZpc2libGVQb3NpdGlv
bihydW5TdGFydCkubmV4dCgpLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgICAgICAgICAgaWYg
KHJ1bkVuZC5pc05vdE51bGwoKSkgeworICAgICAgICAgICAgICAgIHNjb3BlLT5kb2N1bWVudCgp
LT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKKyAgICAgICAgICAgICAg
ICBpdC5hZHZhbmNlKCk7CisgICAgICAgICAgICAgICAgaWYgKCFpdC5hdEVuZCgpKSB7CisgICAg
ICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBpdC5yYW5nZSgpOwogICAgICAg
ICAgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgICAgICAgICAgICAg
dGV4dFJ1blJhbmdlLT5zZXRFbmQocnVuRW5kLm5vZGUoKSwgcnVuRW5kLmRlcHJlY2F0ZWRFZGl0
aW5nT2Zmc2V0KCksIGVjKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dFJ1blJhbmdlLT5zZXRF
bmQocmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHJhbmdlLT5zdGFydE9mZnNldCgpLCBlYyk7CiAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uIHJ1blN0YXJ0ID0gdGV4dFJ1blJhbmdlLT5z
dGFydFBvc2l0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uIHJ1bkVuZCA9IFZp
c2libGVQb3NpdGlvbihydW5TdGFydCkubmV4dCgpLmRlZXBFcXVpdmFsZW50KCk7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChydW5FbmQuaXNOb3ROdWxsKCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgdGV4
dFJ1blJhbmdlLT5zZXRFbmQocnVuRW5kLm5vZGUoKSwgcnVuRW5kLmRlcHJlY2F0ZWRFZGl0aW5n
T2Zmc2V0KCksIGVjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghZWMpOworICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAg
ICAgICB9Cg==
</data>
<flag name="review"
          id="30447"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>