<?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>39958</bug_id>
          
          <creation_ts>2010-05-31 09:16:56 -0700</creation_ts>
          <short_desc>[Qt] TextBreakIteratorQt performance</short_desc>
          <delta_ts>2011-05-10 13:44:37 -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>S60 Hardware</rep_platform>
          <op_sys>S60 3rd edition</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>35784</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Leong">david.leong</reporter>
          <assigned_to name="Raju Kunnath">raju.kunnath</assigned_to>
          <cc>abarth</cc>
    
    <cc>ademar</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>hausmann</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kenneth</cc>
    
    <cc>kling</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>noam</cc>
    
    <cc>prasad.adimulam</cc>
    
    <cc>raju.kunnath</cc>
    
    <cc>suresh.voruganti</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zecke</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>232414</commentid>
    <comment_count>0</comment_count>
    <who name="David Leong">david.leong</who>
    <bug_when>2010-05-31 09:16:56 -0700</bug_when>
    <thetext>Clicking on a large section of text (20,000) characters stored in a div takes several minutes to process a mouse down event on a S60 phone. The app is totally non-responsive and crashes most of the time when this happens.

After some investigations, we found the problem to be located in WebCore&apos; htmlediting.cpp. In the function Position previousCandidate(const Position&amp; position ) the while loop keeps looking for a text position and continually re-initializes QTextBoundaryFinder further down the stack. QTextBoundaryFinder initializes the text buffer to harfbuzz to calculate some line/word break data.

Initializing Harfbuzz is extremely expensive it seems. While looking for the text position in this use case it is re-initializing QTextBoundaryFinder with the same text data in the render text node. 

An optimization will be to cache the text ptr and length to not recreate QTextBoundaryFinder when the same data is presented to harfbuzz.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232417</commentid>
    <comment_count>1</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-05-31 09:20:04 -0700</bug_when>
    <thetext>cc&apos;ing Simon, as he is the Harfbuzz expert ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232540</commentid>
    <comment_count>2</comment_count>
      <attachid>57499</attachid>
    <who name="David Leong">david.leong</who>
    <bug_when>2010-05-31 16:18:01 -0700</bug_when>
    <thetext>Created attachment 57499
Proposed fixes to TextBreakIteratorQt

Proposed fixes, speeds up mouse down event handling for 20k character text from &gt;1min to 2s on S60 device.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232541</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-31 16:22:57 -0700</bug_when>
    <thetext>Attachment 57499 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
Last 3072 characters of output:
espace/operators] [4]
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:52:  Missing spaces around =  [whitespace/operators] [4]
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:54:  Missing space before ( in if(  [whitespace/parens] [5]
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:58:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:60:  Missing spaces around =  [whitespace/operators] [4]
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:61:  Missing spaces around =  [whitespace/operators] [4]
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:62:  Missing spaces around =  [whitespace/operators] [4]
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:73:  Missing spaces around =  [whitespace/operators] [4]
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:75:  Missing spaces around =  [whitespace/operators] [4]
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:77:  Missing space before ( in if(  [whitespace/parens] [5]
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:81:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:83:  Missing spaces around =  [whitespace/operators] [4]
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:84:  Missing spaces around =  [whitespace/operators] [4]
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:85:  Missing spaces around =  [whitespace/operators] [4]
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:102:  Missing spaces around =  [whitespace/operators] [4]
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:104:  Missing spaces around =  [whitespace/operators] [4]
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:107:  Missing space before ( in if(  [whitespace/parens] [5]
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:111:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:113:  Missing spaces around =  [whitespace/operators] [4]
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:114:  Missing spaces around =  [whitespace/operators] [4]
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:115:  Missing spaces around =  [whitespace/operators] [4]
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:126:  Missing spaces around =  [whitespace/operators] [4]
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:128:  Missing spaces around =  [whitespace/operators] [4]
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:131:  Missing space before ( in if(  [whitespace/parens] [5]
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:135:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:137:  Missing spaces around =  [whitespace/operators] [4]
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:138:  Missing spaces around =  [whitespace/operators] [4]
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:139:  Missing spaces around =  [whitespace/operators] [4]
Total errors found: 28 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232542</commentid>
    <comment_count>4</comment_count>
      <attachid>57499</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-05-31 16:25:11 -0700</bug_when>
    <thetext>Comment on attachment 57499
Proposed fixes to TextBreakIteratorQt

WebCore/platform/text/qt/TextBreakIteratorQt.cpp:40
 +      static const UChar* tempBuf;
write out the names, &apos;buffer

WebCore/platform/text/qt/TextBreakIteratorQt.cpp:41
 +      static int tempLen;
length

WebCore/platform/text/qt/TextBreakIteratorQt.cpp:50
 +              tempBuf=0;
you need space between tempBuf and the 0

WebCore/platform/text/qt/TextBreakIteratorQt.cpp:51
 +              tempLen=-1;
same here

WebCore/platform/text/qt/TextBreakIteratorQt.cpp:52
 +              type=QTextBoundaryFinder::Word;
and here

WebCore/platform/text/qt/TextBreakIteratorQt.cpp:54
 +          if( tempBuf == string &amp;&amp; tempLen == length &amp;&amp; type == QTextBoundaryFinder::Word ) {
space after the if and no space before the tempBuf, same at the end

WebCore/platform/text/qt/TextBreakIteratorQt.cpp:60
 +              tempBuf=string;
same

WebCore/platform/text/qt/TextBreakIteratorQt.cpp:61
 +              tempLen=length;
same

WebCore/platform/text/qt/TextBreakIteratorQt.cpp:62
 +              type=QTextBoundaryFinder::Word;
same

Apart form this the code seems quite similar, maybe it makes sense creating an inline method instead (using a template)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232544</commentid>
    <comment_count>5</comment_count>
      <attachid>57500</attachid>
    <who name="David Leong">david.leong</who>
    <bug_when>2010-05-31 17:05:43 -0700</bug_when>
    <thetext>Created attachment 57500
patch v2

Thanks for the quick review Kenneth!

I&apos;ve reworked the patch as you suggested and also ran the style checker to make sure there are no failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232562</commentid>
    <comment_count>6</comment_count>
      <attachid>57500</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-05-31 18:23:17 -0700</bug_when>
    <thetext>Comment on attachment 57500
patch v2

WebCore/platform/text/qt/TextBreakIteratorQt.cpp:44
 +      TextBreakIterator* createBreakIterator(const UChar* string, int length, QTextBoundaryFinder::BoundaryType type ) 
There is a space at the end before the ), please remove.

Btw, maybe we should consider making this inline? but that might be unmeasurable anyway.

WebCore/platform/text/qt/TextBreakIteratorQt.cpp:51
 +              prevlength = -1;
Wouldnt 0 do?

WebCore/platform/text/qt/TextBreakIteratorQt.cpp:55
 +          // Try to reuse the iterator if it was previously inited with the same string
initialized, plus a punctuation mark at the end</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232566</commentid>
    <comment_count>7</comment_count>
      <attachid>57500</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-05-31 18:24:44 -0700</bug_when>
    <thetext>Comment on attachment 57500
patch v2

WebCore/platform/text/qt/TextBreakIteratorQt.cpp:61
 +              *iterator = QTextBoundaryFinder(type, (const QChar *)string, length, buffer, sizeof(buffer));
Can we use a C++ type cast? That is preferred

Apart from these nits, I&apos;m fine with it. Let&apos;s see if Simon has some comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232576</commentid>
    <comment_count>8</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-05-31 18:31:25 -0700</bug_when>
    <thetext>Btw, remove the line with only //

Please write previousLength instead of prevlength, etc/

57         if (prevstring == string &amp;&amp; prevlength == length &amp;&amp; prevtype == type) {

Here is it probably better to first then type, then length and then string

 58             // We are the same!

// Same as last time, reuse iterator. 

 59             iterator-&gt;toStart();
 60         } else {

 // As the boundaries is often recalculated for the same string due to ... store the iterator for reuse.

 61             *iterator = QTextBoundaryFinder(type, (const QChar *)string, length, buffer, sizeof(buffer));
 62             prevstring = string;
 63             prevlength = length;
 64             prevtype = type;
 65         }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232587</commentid>
    <comment_count>9</comment_count>
      <attachid>57508</attachid>
    <who name="David Leong">david.leong</who>
    <bug_when>2010-05-31 19:33:25 -0700</bug_when>
    <thetext>Created attachment 57508
Fixed based on Kenneth&apos;s latest comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232588</commentid>
    <comment_count>10</comment_count>
      <attachid>57508</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-05-31 19:39:32 -0700</bug_when>
    <thetext>Comment on attachment 57508
Fixed based on Kenneth&apos;s latest comments.

I would personally have used previousString and not previousstring, as it fits with how we normally name variables, but that is a nit. I&apos;m r+, but please let this sit for at least a day so that others have the change to have a look at it as well.

WebCore/ChangeLog:5
 +          [Qt] TextBreakIterator QT performance
It is called Qt, not QT. QT is short for QuickTime, which can cause confusion as it is used other places in WebKit.

Did you measure if the inlining made any difference?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232603</commentid>
    <comment_count>11</comment_count>
    <who name="David Leong">david.leong</who>
    <bug_when>2010-05-31 21:09:38 -0700</bug_when>
    <thetext>Thanks for the review Kenneth! Always good to be perfect. I will be glad to make the changes in the morning w/ the variable names too :)

I tried it on device and didn&apos;t notice any difference with inlining, i guess 1s vs 1.1s wasn&apos;t noticeable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232661</commentid>
    <comment_count>12</comment_count>
      <attachid>57508</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-06-01 03:22:07 -0700</bug_when>
    <thetext>Comment on attachment 57508
Fixed based on Kenneth&apos;s latest comments.

WebCore/platform/text/qt/TextBreakIteratorQt.cpp:40
 +      static const UChar* previousstring;
The main problem I see with this patch is that this variable becomes a dangling pointer. There is _no_ guarantee at all that the caller of the text iterator functions isn&apos;t going to free the memory later. I&apos;m convinced that this is going to cause random crashes at run-time.

One solution I think would be to &quot;fix&quot; the caller side in WebKit to re-use iterator objects - as one way to avoid repeated text analysis. An alternative would be to improve QTextBoundaryFinder to perform the analysis lazily and from within the string and not always from the start.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232925</commentid>
    <comment_count>13</comment_count>
      <attachid>57586</attachid>
    <who name="David Leong">david.leong</who>
    <bug_when>2010-06-01 13:12:00 -0700</bug_when>
    <thetext>Created attachment 57586
Patch, lets try this again.

Thanks for the review again Kenneth, Simon :)

Updated the patch to use StringImpl&apos;s hash as a key to the cached TextBreakIterator. The hash is calculated only once as needed and can be used to identify the string. If the hash and search type is the same, then we re-used the iterator. 

There is no dependency on the string pointer anymore, so it should not crash in the case the string pointer is ever reused with a string that has the same length but different content.

I overloaded the TextBreakIterator functions instead of changing all of them, I am worried it may break other port&apos;s builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233191</commentid>
    <comment_count>14</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-06-02 03:45:05 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created an attachment (id=57586) [details]
&gt; Patch, lets try this again.
&gt; 
&gt; Thanks for the review again Kenneth, Simon :)
&gt; 
&gt; Updated the patch to use StringImpl&apos;s hash as a key to the cached TextBreakIterator. The hash is calculated only once as needed and can be used to identify the string. If the hash and search type is the same, then we re-used the iterator. 
&gt; 
&gt; There is no dependency on the string pointer anymore, so it should not crash in the case the string pointer is ever reused with a string that has the same length but different content.

That&apos;s a great idea!

How can we protect ourselves from hash collisions?
 
&gt; I overloaded the TextBreakIterator functions instead of changing all of them, I am worried it may break other port&apos;s builds.

The EWS can help us with that :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233350</commentid>
    <comment_count>15</comment_count>
    <who name="David Leong">david.leong</who>
    <bug_when>2010-06-02 11:18:38 -0700</bug_when>
    <thetext>From StringImpl&apos;s hash function &quot;http://www.azillionmonkeys.com/qed/hash.html&quot;

&quot;I was shocked to find that there were no significant impediments to this exercise, and I easily found a hash function with all these properties after a few hours or work. I then subjected all realistic sub-bit patterns of the hash output to a simple statistical test and verified that it had a distribution equivalent to a uniformly random map.&quot;

The likely hood of a collision in the hash is very unlikely unless the data is exactly the same.

If we need more guarantee we can store and check the length as well as a preventive measure for absolute comparison.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233420</commentid>
    <comment_count>16</comment_count>
    <who name="David Leong">david.leong</who>
    <bug_when>2010-06-02 13:32:34 -0700</bug_when>
    <thetext>Simon,

How about we create a TextBreakIterator for each RenderText and store it as a member? The side effect is a cost of 4bytes * text length + size of the QTextBoundaryFinder class. It would not be very efficient for small texts so we would also need to determine with some huristic to use the singleton.

For large texts the memory use would go up quite but that is a trade off for performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235208</commentid>
    <comment_count>17</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-06-08 04:53:38 -0700</bug_when>
    <thetext>Comments from Dave Hyatt:

On Jun 7, 2010, at 4:18 PM, David.Leong@nokia.com wrote:
&gt; My question is can we optimize this flow somehow? Can we re-use the 
&gt; TextBreakIterator in the render text class when performing the 
&gt; RenderText::positionForPoint() function?

That&apos;s what the ICU implementation does.  I think you just need to fix your implementation to do the same.  If you want to push the re-use higher you could probably make cursorMovementIterator cross-platform and then have it contain the static pointer to the reused iterator.  Then the existing cursorMovementIterator could be renamed and be called by the new cross-platform function.   However you could also just fix your implementation of cursorMovementIterator to reuse the iterator.

static bool createdCursorMovementIterator = false;
static TextBreakIterator* staticCursorMovementIterator;
return setUpIteratorWithRules(createdCursorMovementIterator, staticCursorMovementIterator, kRules, string, length);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235297</commentid>
    <comment_count>18</comment_count>
      <attachid>57508</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-06-08 10:03:05 -0700</bug_when>
    <thetext>Comment on attachment 57508
Fixed based on Kenneth&apos;s latest comments.

r- due to Simon&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235298</commentid>
    <comment_count>19</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-06-08 10:04:47 -0700</bug_when>
    <thetext>Block the release so that this gets cherry-picked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235299</commentid>
    <comment_count>20</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-06-08 10:05:13 -0700</bug_when>
    <thetext>Fix landed in r60847</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235329</commentid>
    <comment_count>21</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-06-08 10:35:16 -0700</bug_when>
    <thetext>Follow-up fix in r60851</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235333</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-08 10:36:24 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/60847 might have broken Qt Linux Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236219</commentid>
    <comment_count>23</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-06-10 01:12:33 -0700</bug_when>
    <thetext>&lt;cherry-pick-for-backport: r60851&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236220</commentid>
    <comment_count>24</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-06-10 01:14:04 -0700</bug_when>
    <thetext>r60847 cherry-picked into qtwebkit-4.6 with commit 81a1d730cd489186c8d7eb2c801c2cc06a1dadbd
r60851 cherry-picked into qtwebkit-4.6 with commit d8a9d09376a47b92ea49f1a078c392cbfdbc0ed6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236222</commentid>
    <comment_count>25</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-06-10 01:17:37 -0700</bug_when>
    <thetext>Revision r60847 cherry-picked into qtwebkit-2.0 with commit 569e68557ca112761d15646a26b69d9531c78bc3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236224</commentid>
    <comment_count>26</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-06-10 01:19:56 -0700</bug_when>
    <thetext>Revision r60847 cherry-picked into qtwebkit-2.0 with commit 569e68557ca112761d15646a26b69d9531c78bc3
Revision r60851 cherry-picked into qtwebkit-2.0 with commit 218151d237627a57159355a2ead39080d4984885</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319316</commentid>
    <comment_count>27</comment_count>
    <who name="Raju Kunnath">raju.kunnath</who>
    <bug_when>2010-12-09 00:53:49 -0800</bug_when>
    <thetext>I assume after this check-in we are finding the following crash.

Program counter 804313D4 memcompare 003C cmem_.o(.emb_text)

Link register 7EE861F9 memcmp_private 000D stringfuncs_private.o(.text)


This is current stack pointer 00434CC0 7EE861F9 memcmp_private 000D stringfuncs_private.o(.text)

00434CC4 7EE862D5 memcmp 000B memcmp.o(.text)


00434CC8 7BCE2F28 WebCore::setUpIterator(WebCore::TextBreakIterator&amp;, QTextBoundaryFinder::BoundaryType, const unsigned short*, int) 0054 TextBreakIteratorQt.o(.text)

00434CCC 7BD7083C WebCore::RenderText::calcPrefWidths(int) 0048 RenderText.o(.text)


00434CD0 7BCF78F4 WebCore::nextBreakablePosition(const unsigned short*, int, int, bool) 00D0 break_lines.o(.text)

00434CD4 7BD1A508 WebCore::RenderBlock::findNextLineBreak(WebCore::BidiResolver&amp;, bool, bool&amp;, bool&amp;, WebCore::EClear*) 0FA4 RenderBlockLineLayout.o(.text)


00434CD8 7BD1C930 WebCore::RenderBlock::layoutInlineChildren(bool, int&amp;, int&amp;) 0B5C RenderBlockLineLayout.o(.text)

00434CDC 7BBCF250 WebCore::HTMLTokenizer::timerFired(WebCore::Timer*) 0000 HTMLTokenizer.o(.text)


00434CE0 7B82FC00 ...{

00434CE4 7BD28658 WebCore::RenderBoxModelObject::paddingRight(bool) const 004C RenderBoxModelObject.o(.text)


00434CE8 7BD201EC WebCore::RenderBox::calcHorizontalMargins(const WebCore::Length&amp;, const WebCore::Length&amp;, int) 0078 RenderBox.o(.text)

00434CEC 7BD0AF00 WebCore::RenderBlock::layoutBlock(bool) 0554 RenderBlock.o(.text)


00434CF0 7BD10D48 WebCore::RenderBlock::layout() 002C RenderBlock.o(.text)

00434CF4 7BD07A10 WebCore::RenderBlock::layoutBlockChild(WebCore::RenderBox*, WebCore::RenderBlock::MarginInfo&amp;, int&amp;, int&amp;) 0328 RenderBlock.o(.text)


00434CF8 7BD09328 WebCore::RenderBlock::layoutBlockChildren(bool, int&amp;) 03B4 RenderBlock.o(.text)

00434CFC 7BD0AF14 WebCore::RenderBlock::layoutBlock(bool) 0568 RenderBlock.o(.text)


00434D00 7BD07BC4 WebCore::RenderBlock::layoutBlockChild(WebCore::RenderBox*, WebCore::RenderBlock::MarginInfo&amp;, int&amp;, int&amp;) 04DC RenderBlock.o(.text)

00434D04 7BD10D48 WebCore::RenderBlock::layout() 002C RenderBlock.o(.text)


00434D08 7BD05128 WebCore::RenderBlock::layoutPositionedObjects(bool) 0130 RenderBlock.o(.text)

00434D0C 7BD0B388 WebCore::RenderBlock::layoutBlock(bool) 09DC RenderBlock.o(.text)


00434D14 7BD10D48 WebCore::RenderBlock::layout() 002C RenderBlock.o(.text)

00434D18 7BD07A10 WebCore::RenderBlock::layoutBlockChild(WebCore::RenderBox*, WebCore::RenderBlock::MarginInfo&amp;, int&amp;, int&amp;) 0328 RenderBlock.o(.text)


00434D1C 7BD09328 WebCore::RenderBlock::layoutBlockChildren(bool, int&amp;) 03B4 RenderBlock.o(.text)

00434D20 7BD28658 WebCore::RenderBoxModelObject::paddingRight(bool) const 004C RenderBoxModelObject.o(.text)


00434D24 7BD2128C WebCore::RenderBox::calcWidthUsing(WebCore::WidthType, int) 019C RenderBox.o(.text)

00434D28 7BD0AF14 WebCore::RenderBlock::layoutBlock(bool) 0568 RenderBlock.o(.text)


00434D2C 7EE89A49 free 0007 ualloc.o(.text)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319500</commentid>
    <comment_count>28</comment_count>
    <who name="Suresh Voruganti">suresh.voruganti</who>
    <bug_when>2010-12-09 09:14:50 -0800</bug_when>
    <thetext>As per the comments # 27, re opening the error and assigning this to Kennth.

Fix need to be cherry picked to Qtwebkit 2.1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319502</commentid>
    <comment_count>29</comment_count>
    <who name="Suresh Voruganti">suresh.voruganti</who>
    <bug_when>2010-12-09 09:15:44 -0800</bug_when>
    <thetext>Changing the state to NEW</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319539</commentid>
    <comment_count>30</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-12-09 10:07:10 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; As per the comments # 27, re opening the error and assigning this to Kennth.
&gt; 
&gt; Fix need to be cherry picked to Qtwebkit 2.1

I do not have time to look at this before after the christmas holidays, due to other deadlines. So you might want to find someone else to look at it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320296</commentid>
    <comment_count>31</comment_count>
    <who name="Suresh Voruganti">suresh.voruganti</who>
    <bug_when>2010-12-10 12:01:57 -0800</bug_when>
    <thetext>Raju, is working on patch, so assigning the issue to Raju</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320618</commentid>
    <comment_count>32</comment_count>
    <who name="Raju Kunnath">raju.kunnath</who>
    <bug_when>2010-12-10 23:41:47 -0800</bug_when>
    <thetext>Kenneth,
I am planning to make a deep copy of the string that is referenced in Break Iterator. Since this include a memcpy and allocation of memeory, there could be a very little impact on the perf. Please suggest if this correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320639</commentid>
    <comment_count>33</comment_count>
    <who name="Raju Kunnath">raju.kunnath</who>
    <bug_when>2010-12-11 03:52:48 -0800</bug_when>
    <thetext>Please ignore my previous comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320667</commentid>
    <comment_count>34</comment_count>
      <attachid>76304</attachid>
    <who name="Raju Kunnath">raju.kunnath</who>
    <bug_when>2010-12-11 05:41:08 -0800</bug_when>
    <thetext>Created attachment 76304
fix for crash based on Davids suggestion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320668</commentid>
    <comment_count>35</comment_count>
    <who name="Raju Kunnath">raju.kunnath</who>
    <bug_when>2010-12-11 05:43:20 -0800</bug_when>
    <thetext>Kenneth,
Please review patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320836</commentid>
    <comment_count>36</comment_count>
      <attachid>76304</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-12 07:28:18 -0800</bug_when>
    <thetext>Comment on attachment 76304
fix for crash based on Davids suggestion

Attachment is not viewable in your browser because its MIME type (application/octet-stream) is not one that your browser is able to display</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320837</commentid>
    <comment_count>37</comment_count>
      <attachid>76304</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-12 07:30:21 -0800</bug_when>
    <thetext>Comment on attachment 76304
fix for crash based on Davids suggestion

It needs explanation, a changelog entry and much possibly comments in the code. See http://webkit.org/coding/contributing.html

Please also set the r? flag and make your patch text/plain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320846</commentid>
    <comment_count>38</comment_count>
      <attachid>76330</attachid>
    <who name="Raju Kunnath">raju.kunnath</who>
    <bug_when>2010-12-12 09:04:36 -0800</bug_when>
    <thetext>Created attachment 76330
Fix for the crash due to obsolete pointer reference</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320852</commentid>
    <comment_count>39</comment_count>
      <attachid>76331</attachid>
    <who name="Raju Kunnath">raju.kunnath</who>
    <bug_when>2010-12-12 09:24:37 -0800</bug_when>
    <thetext>Created attachment 76331
Fix for crash

updated again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320853</commentid>
    <comment_count>40</comment_count>
      <attachid>76331</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-12-12 09:30:41 -0800</bug_when>
    <thetext>Comment on attachment 76331
Fix for crash

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

&gt; WebCore/platform/text/qt/TextBreakIteratorQt.cpp:65
&gt; +        if (iterator.isValid() &amp;&amp; type == iterator.type() &amp;&amp; length == iterator.length &amp;&amp; string == iterator.string
&gt;              &amp;&amp; memcmp(string, iterator.string, length) == 0) {

This makes no sense.

If string == iterator.string, there&apos;s no point in calling memcmp(), and this won&apos;t shield against dereferencing deleted pointers anyway, but rather add the restriction that string and iterator.string must point to the same UChar array.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320900</commentid>
    <comment_count>41</comment_count>
    <who name="David Leong">david.leong</who>
    <bug_when>2010-12-12 16:30:10 -0800</bug_when>
    <thetext>The pointer compare does help when the same memory address gets recycled by the allocator but the actual contents are different. In this case we would need to reset all of the data in the text break iterator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320921</commentid>
    <comment_count>42</comment_count>
    <who name="Raju Kunnath">raju.kunnath</who>
    <bug_when>2010-12-12 19:58:35 -0800</bug_when>
    <thetext>Here are my understanding.
The pointer comparision helps to avoid the reference to the obsolete pointer.
Also the purpose of the original change is to avoid creation of new iterator many time for same content (where the same referance is passed, with same content in case of mouse event) the memcmp is needed to ensure the content is same.
So I assume this change is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321093</commentid>
    <comment_count>43</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-12-13 06:51:39 -0800</bug_when>
    <thetext>(In reply to comment #41)
&gt; The pointer compare does help when the same memory address gets recycled by the allocator but the actual contents are different. In this case we would need to reset all of the data in the text break iterator.

If the pointers are equal, then memcmp()ing them will return 0. There&apos;s probably even an early return for that case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321421</commentid>
    <comment_count>44</comment_count>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2010-12-13 14:27:17 -0800</bug_when>
    <thetext>(In reply to comment #43)
&gt; (In reply to comment #41)
&gt; &gt; The pointer compare does help when the same memory address gets recycled by the allocator but the actual contents are different. In this case we would need to reset all of the data in the text break iterator.
&gt; 
&gt; If the pointers are equal, then memcmp()ing them will return 0. There&apos;s probably even an early return for that case.

The patch looks ok to me if the memcmp() test is removed as Andreas suggested. 

The patch does indeed makes the optimization less useful as the iterator does not get reused as aggressively.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321686</commentid>
    <comment_count>45</comment_count>
      <attachid>76501</attachid>
    <who name="Raju Kunnath">raju.kunnath</who>
    <bug_when>2010-12-13 22:31:22 -0800</bug_when>
    <thetext>Created attachment 76501
Updated the patch based on the review

Updated the patch as per the review comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321687</commentid>
    <comment_count>46</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-13 22:34:16 -0800</bug_when>
    <thetext>Attachment 76501 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;WebCore/ChangeLog&apos;, u&apos;WebCore/platform/text/qt/TextBreakIteratorQt.cpp&apos;]&quot; exit_code: 1
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:65:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321701</commentid>
    <comment_count>47</comment_count>
      <attachid>76504</attachid>
    <who name="Raju Kunnath">raju.kunnath</who>
    <bug_when>2010-12-13 22:57:42 -0800</bug_when>
    <thetext>Created attachment 76504
Corrected style check</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321704</commentid>
    <comment_count>48</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-13 23:00:37 -0800</bug_when>
    <thetext>Attachment 76504 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;WebCore/ChangeLog&apos;, u&apos;WebCore/platform/text/qt/TextBreakIteratorQt.cpp&apos;]&quot; exit_code: 1
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:64:  Missing space before {  [whitespace/braces] [5]
Total errors found: 1 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321706</commentid>
    <comment_count>49</comment_count>
      <attachid>76505</attachid>
    <who name="Raju Kunnath">raju.kunnath</who>
    <bug_when>2010-12-13 23:09:43 -0800</bug_when>
    <thetext>Created attachment 76505
Corrected again the style issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321732</commentid>
    <comment_count>50</comment_count>
      <attachid>76505</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-14 00:48:23 -0800</bug_when>
    <thetext>Comment on attachment 76505
Corrected again the style issue

You need to mention which tests this fixes (from crashing) in your ChagneLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321737</commentid>
    <comment_count>51</comment_count>
      <attachid>76511</attachid>
    <who name="Raju Kunnath">raju.kunnath</who>
    <bug_when>2010-12-14 01:09:08 -0800</bug_when>
    <thetext>Created attachment 76511
uploaded the patch again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321926</commentid>
    <comment_count>52</comment_count>
      <attachid>76511</attachid>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2010-12-14 05:54:41 -0800</bug_when>
    <thetext>Comment on attachment 76511
uploaded the patch again

LGTM, r+. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321927</commentid>
    <comment_count>53</comment_count>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2010-12-14 06:01:26 -0800</bug_when>
    <thetext>Ideally - I think - https://bug-39958-attachments.webkit.org/attachment.cgi?id=76511 should be cherry-picked to qtwebkit-4.6, qtwebkit-2.0 and qtwebkit-2.1 branches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321928</commentid>
    <comment_count>54</comment_count>
      <attachid>76511</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-12-14 06:08:43 -0800</bug_when>
    <thetext>Comment on attachment 76511
uploaded the patch again

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

&gt; WebCore/ChangeLog:10
&gt; +        The previous fix for the performance improvement had a reference to a
&gt; +        pointer which is deleted and hence the memcmp crashed. A check is added
&gt; +        to validate the string is alive or not.

This still makes very little sense.

Do you actually know what you are trying to fix? We need a clear explanation of what the problem is.
I admit I haven&apos;t looked at the issue closely yet but it&apos;s obvious that this is fixing a symptom and not a root cause.

&gt; WebCore/ChangeLog:15
&gt; +        This change will fix the crash while on panning and scrolling of a page has many div tages.
&gt; +        Many testing are done w.r.t panning and scrolling on mobile phone and emulator. Also this
&gt; +        is a sporadic crash hence performed manual regression tests to check whether the crash is 
&gt; +        reproducible.

This adds no useful information and should be left out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321950</commentid>
    <comment_count>55</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-12-14 07:10:25 -0800</bug_when>
    <thetext>After a closer look, it seems to me that for the iterator caching optimization to work reliably, we should hold a proper reference to the string inside our TextBreakIterator.

Either we could change the TextBreakIterator API to take a String object instead of a UChar*/length pair, or we could take a deep copy of the string (as suggested in a comment above.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322129</commentid>
    <comment_count>56</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-12-14 12:48:38 -0800</bug_when>
    <thetext>(In reply to comment #55)
&gt; After a closer look, it seems to me that for the iterator caching optimization to work reliably, we should hold a proper reference to the string inside our TextBreakIterator.
&gt; 
&gt; Either we could change the TextBreakIterator API to take a String object instead of a UChar*/length pair, or we could take a deep copy of the string (as suggested in a comment above.)

The first one seems like the proper way to solve this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322131</commentid>
    <comment_count>57</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-12-14 12:50:43 -0800</bug_when>
    <thetext>(In reply to comment #53)
&gt; Ideally - I think - https://bug-39958-attachments.webkit.org/attachment.cgi?id=76511 should be cherry-picked to qtwebkit-4.6, qtwebkit-2.0 and qtwebkit-2.1 branches.

This patch is bad... you can be unlucky and get the same pointer and still using a different string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322577</commentid>
    <comment_count>58</comment_count>
      <attachid>76639</attachid>
    <who name="Raju Kunnath">raju.kunnath</who>
    <bug_when>2010-12-15 05:28:31 -0800</bug_when>
    <thetext>Created attachment 76639
Fixe based on the comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322578</commentid>
    <comment_count>59</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-15 05:30:19 -0800</bug_when>
    <thetext>Attachment 76639 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;WebCore/ChangeLog&apos;, u&apos;WebCore/platform/text/qt/TextBreakIteratorQt.cpp&apos;]&quot; exit_code: 1
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:59:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 1 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322579</commentid>
    <comment_count>60</comment_count>
      <attachid>76640</attachid>
    <who name="Raju Kunnath">raju.kunnath</who>
    <bug_when>2010-12-15 05:36:20 -0800</bug_when>
    <thetext>Created attachment 76640
Fix as per the commnet</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322616</commentid>
    <comment_count>61</comment_count>
      <attachid>76640</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-12-15 08:44:28 -0800</bug_when>
    <thetext>Comment on attachment 76640
Fix as per the commnet

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

This solution is OK as a temporary workaround, but we should really fix this properly to avoid deep-copying the string.

r- for using String(UChar*) instead of String(UChar*, int).

&gt; WebCore/ChangeLog:12
&gt; +        The previous fix for the performance improvement had a reference to a
&gt; +        pointer which is deleted and hence the memcmp crashed. A check is added
&gt; +        to validate the string is alive or not. The root cause of this issue is
&gt; +        that in Symbian the Fastallocator claim the memory fast and hence the crash.
&gt; +        Also this is a sporadic crash.

&quot;A check is added to validate the string is alive or not.&quot; - This sentence no longer applies.

&gt; WebCore/ChangeLog:14
&gt; +        Tested the patch on QtTestBrowser on S60 devices and windows.

This is implied and can be left out.

&gt; WebCore/platform/text/qt/TextBreakIteratorQt.cpp:51
&gt; +            , string(&quot;&quot;) {} 

Is there any reason to initialize string with String(&quot;&quot;) instead of String()?

&gt; WebCore/platform/text/qt/TextBreakIteratorQt.cpp:60
&gt; +        String localString = string;

This will cause an unnecessary loop over &apos;string&apos; to determine its length. Should be:

String localString(string, length);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322658</commentid>
    <comment_count>62</comment_count>
      <attachid>76661</attachid>
    <who name="Raju Kunnath">raju.kunnath</who>
    <bug_when>2010-12-15 10:10:17 -0800</bug_when>
    <thetext>Created attachment 76661
Review comments incorporated

Updated the patch with review commnets.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322666</commentid>
    <comment_count>63</comment_count>
      <attachid>76663</attachid>
    <who name="Raju Kunnath">raju.kunnath</who>
    <bug_when>2010-12-15 10:24:56 -0800</bug_when>
    <thetext>Created attachment 76663
uploading with review comments

Again made mistake is styling...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322668</commentid>
    <comment_count>64</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-15 10:26:06 -0800</bug_when>
    <thetext>Attachment 76663 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;WebCore/ChangeLog&apos;, u&apos;WebCore/platform/text/qt/TextBreakIteratorQt.cpp&apos;]&quot; exit_code: 1
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:61:  Missing space after ,  [whitespace/comma] [3]
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:67:  Missing space after ,  [whitespace/comma] [3]
WebCore/platform/text/qt/TextBreakIteratorQt.cpp:67:  Extra space before )  [whitespace/parens] [2]
Total errors found: 3 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322672</commentid>
    <comment_count>65</comment_count>
      <attachid>76664</attachid>
    <who name="Raju Kunnath">raju.kunnath</who>
    <bug_when>2010-12-15 10:30:38 -0800</bug_when>
    <thetext>Created attachment 76664
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322980</commentid>
    <comment_count>66</comment_count>
      <attachid>76718</attachid>
    <who name="Raju Kunnath">raju.kunnath</who>
    <bug_when>2010-12-15 17:42:33 -0800</bug_when>
    <thetext>Created attachment 76718
removed extra argument passed to the fucntion

removed extra argument passed to the fucntion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323135</commentid>
    <comment_count>67</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-12-16 05:58:28 -0800</bug_when>
    <thetext>(In reply to comment #66)
&gt; Created an attachment (id=76718) [details]
&gt; removed extra argument passed to the fucntion
&gt; 
&gt; removed extra argument passed to the fucntion

It looks OK but aint we back where we started now? I mean we did the original patch as this code path was quite slow and I think this patch brings us back to the original situation.

Have you done any performance measurement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323595</commentid>
    <comment_count>68</comment_count>
    <who name="Raju Kunnath">raju.kunnath</who>
    <bug_when>2010-12-16 20:16:53 -0800</bug_when>
    <thetext>Will update the performance numbers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323737</commentid>
    <comment_count>69</comment_count>
    <who name="Raju Kunnath">raju.kunnath</who>
    <bug_when>2010-12-17 06:13:56 -0800</bug_when>
    <thetext>Please find the the performance measurement done on N8

FPS for OVi Application is 42.34
Reaction time is 0.128 secs

Please note that this result is based on only one scroll calculation.(To get a better accuracy we need to calculate based on 3 iterations)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323748</commentid>
    <comment_count>70</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-12-17 06:40:12 -0800</bug_when>
    <thetext>We need a description of how that was measures, and measurements for 1) without the original patch, 2) with the original patch (which causes crashes), 3) with your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323765</commentid>
    <comment_count>71</comment_count>
    <who name="Raju Kunnath">raju.kunnath</who>
    <bug_when>2010-12-17 07:36:02 -0800</bug_when>
    <thetext>The measurement was taken a high speed camera and analysis was done using midas player. Please not that this takes 3 to 4 Hrs. We have the lab setup for doing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323786</commentid>
    <comment_count>72</comment_count>
    <who name="Raju Kunnath">raju.kunnath</who>
    <bug_when>2010-12-17 08:21:00 -0800</bug_when>
    <thetext>just for information. I got the reading from David with the previous patch and it is arround ~50fps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324123</commentid>
    <comment_count>73</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-12-18 11:13:00 -0800</bug_when>
    <thetext>(In reply to comment #71)
&gt; The measurement was taken a high speed camera and analysis was done using midas player. Please not that this takes 3 to 4 Hrs. We have the lab setup for doing this.

Don&apos;t you have easier ways of analyzing this? I guess the performance implications should be quite similar on Linux, and there you can measure these things quite easy. Similar for Mac OS, where you have tools such as Shark (DTrace front-end).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324124</commentid>
    <comment_count>74</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-12-18 11:17:27 -0800</bug_when>
    <thetext>(In reply to comment #72)
&gt; just for information. I got the reading from David with the previous patch and it is arround ~50fps.

OK, so we&apos;ve got:

a) Without patch: ?? FPS
b) With original patch: 50 FPS
c) With improved original patch: 43 FPS.

It would be really interesting in seeing how a) compares with c). Also, No&apos;am made a patch for WebKit half a year ago, making it possible to use ICU. Thought we cannot make Qt depend on ICU, we could use ICU if the platform comes with it, and I believe that Symbian does so.

d) With ICU: ?? FPS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324528</commentid>
    <comment_count>75</comment_count>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2010-12-20 13:05:11 -0800</bug_when>
    <thetext>Added the last patch (https://bugs.webkit.org/attachment.cgi?id=76718) to the qtwebkit-2.1 branch as 4bed859438727a82f1e9bc56a8a26e2c0082770b (http://gitorious.org/webkit/qtwebkit/commit/4bed859)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325700</commentid>
    <comment_count>76</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2010-12-22 14:34:48 -0800</bug_when>
    <thetext>&gt; d) With ICU: ?? FPS.

It&apos;s really easy to test, just build current webkit with --qmakearg=CONFIG+=text_breaking_with_icu (see https://bugs.webkit.org/show_bug.cgi?id=40332)

But I don&apos;t really have the means to measure its FPS in a comparable way. Valgrinding it before showed significant scrolling improvements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326524</commentid>
    <comment_count>77</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2010-12-24 02:09:46 -0800</bug_when>
    <thetext>(In reply to comment #76)
&gt; &gt; d) With ICU: ?? FPS.
&gt; 
&gt; It&apos;s really easy to test, just build current webkit with --qmakearg=CONFIG+=text_breaking_with_icu (see https://bugs.webkit.org/show_bug.cgi?id=40332)
&gt; 
&gt; But I don&apos;t really have the means to measure its FPS in a comparable way. Valgrinding it before showed significant scrolling improvements.

It shouldn&apos;t be that hard to create a reduction. For the test database you have, instrument the text break iterator and let it emit code or data (qdatastream) and then feed the data to your reduction and you will get nice numbers that you can compare while you tweak your implementation...

http://gitorious.org/qtwebkit/performance/trees/master/reductions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326537</commentid>
    <comment_count>78</comment_count>
      <attachid>76718</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2010-12-24 02:26:21 -0800</bug_when>
    <thetext>Comment on attachment 76718
removed extra argument passed to the fucntion

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

I am not convinced based on the commit message. Please explain in the commit message where this speed up is coming from.


&gt; WebCore/ChangeLog:12
&gt; +

I don&apos;t understand this message. Are you fixing a crash introduced by a previous commit? Or is this patch improving the performance? Where is this speed up coming from?

&gt; WebCore/platform/text/qt/TextBreakIteratorQt.cpp:47
&gt; +            : QTextBoundaryFinder(type, string)

This is just using &apos;QString String::operator()&apos;. Is there any change here? Avoiding a deep copy or such?

&gt; WebCore/platform/text/qt/TextBreakIteratorQt.cpp:-65
&gt; -            &amp;&amp; memcmp(string, iterator.string, length) == 0) {

Where is the speed up coming from? Avoiding the memcmp as equal(StringImpl*,StringImpl*) is more clever? Is iterator.isValid() or iterator.type() doing more work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327106</commentid>
    <comment_count>79</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2010-12-27 13:37:12 -0800</bug_when>
    <thetext>See https://bugs.webkit.org/show_bug.cgi?id=51653
I think it fixes the problem without touching TextBreakIterator at all, providing that the style for the paragraph has -webkit-user-select: none, which should be true for a mobile/touch list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330399</commentid>
    <comment_count>80</comment_count>
    <who name="Prasad">prasad.adimulam</who>
    <bug_when>2011-01-06 13:57:41 -0800</bug_when>
    <thetext>Related QtWRT Bugzilla error ID: http://bugs.nokia-boston.com/bugzilla/show_bug.cgi?id=7297</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372139</commentid>
    <comment_count>81</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-03-23 07:47:36 -0700</bug_when>
    <thetext>This issue was essentially fixed in bug 55139.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57499</attachid>
            <date>2010-05-31 16:18:01 -0700</date>
            <delta_ts>2010-05-31 17:05:43 -0700</delta_ts>
            <desc>Proposed fixes to TextBreakIteratorQt</desc>
            <filename>39958.patch</filename>
            <type>text/plain</type>
            <size>5371</size>
            <attacher name="David Leong">david.leong</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDQ1NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMDUtMzEgIERhdmlkIExlb25nICA8ZGF2aWQubGVvbmdAbm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtRdF0gVGV4dEJyZWFrSXRlcmF0b3IgUVQgcGVyZm9ybWFuY2UKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5OTU4CisgICAgICAgIAorICAgICAgICBS
ZXdvcmsgVGV4dEJyZWFrSXRlcmF0b3JRdCBjbGFzcyB0byBjYWNoZSBsYXN0IHBhcnNlZCBkYXRh
IGJ1ZmZlci4KKyAgICAgICAgVGhpcyBpbmNyZWFzZXMgcGVyZm9ybWFuY2Ugb2YgbW91c2UgZG93
biBldmVudHMgd2hlbiBkaXZzIGhhdmUgbGFyZ2UKKyAgICAgICAgYW1vdW50cyBvZiB0ZXh0LiBU
aGlzIHNhdmVzIHRpbWUgZnJvbSBoYXZpbmcgaGFyZmJ1enogcmVwYXJzZSB0aGUgdGV4dAorICAg
ICAgICBzdHJpbmcgb3ZlciBhbmQgb3ZlciBhZ2Fpbi4KKworICAgICAgICAqIHBsYXRmb3JtL3Rl
eHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3b3JkQnJl
YWtJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpjaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OmxpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OnNlbnRlbmNlQnJlYWtJdGVyYXRvcik6CisKIDIwMTAtMDUtMzEgIEx1Y2FzIERlIE1hcmNoaSAg
PGx1Y2FzLmRlbWFyY2hpQHByb2Z1c2lvbi5tb2JpPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtl
bm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3F0
L1RleHRCcmVha0l0ZXJhdG9yUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
dGV4dC9xdC9UZXh0QnJlYWtJdGVyYXRvclF0LmNwcAkocmV2aXNpb24gNjA0NTApCisrKyBXZWJD
b3JlL3BsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDE1ICszNywzMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgfTsKICAgICBz
dGF0aWMgUVRleHRCb3VuZGFyeUZpbmRlciogaXRlcmF0b3IgPSAwOwogICAgIHN0YXRpYyB1bnNp
Z25lZCBjaGFyIGJ1ZmZlclsxMDI0XTsKLQorICAgIHN0YXRpYyBjb25zdCBVQ2hhciogdGVtcEJ1
ZjsKKyAgICBzdGF0aWMgaW50IHRlbXBMZW47CisgICAgc3RhdGljIFFUZXh0Qm91bmRhcnlGaW5k
ZXI6OkJvdW5kYXJ5VHlwZSB0eXBlOworICAgIAogICAgIFRleHRCcmVha0l0ZXJhdG9yKiB3b3Jk
QnJlYWtJdGVyYXRvcihjb25zdCBVQ2hhciogc3RyaW5nLCBpbnQgbGVuZ3RoKQogICAgIHsKICAg
ICAgICAgaWYgKCFzdHJpbmcgfHwgIWxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiAwOwotICAg
ICAgICBpZiAoIWl0ZXJhdG9yKQorICAgICAgICBpZiAoIWl0ZXJhdG9yKSB7CiAgICAgICAgICAg
ICBpdGVyYXRvciA9IG5ldyBRVGV4dEJvdW5kYXJ5RmluZGVyOwotCi0gICAgICAgICppdGVyYXRv
ciA9IFFUZXh0Qm91bmRhcnlGaW5kZXIoUVRleHRCb3VuZGFyeUZpbmRlcjo6V29yZCwgKGNvbnN0
IFFDaGFyICopc3RyaW5nLCBsZW5ndGgsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpOworICAgICAg
ICAgICAgdGVtcEJ1Zj0wOworICAgICAgICAgICAgdGVtcExlbj0tMTsKKyAgICAgICAgICAgIHR5
cGU9UVRleHRCb3VuZGFyeUZpbmRlcjo6V29yZDsKKyAgICAgICAgfQorICAgICAgICBpZiggdGVt
cEJ1ZiA9PSBzdHJpbmcgJiYgdGVtcExlbiA9PSBsZW5ndGggJiYgdHlwZSA9PSBRVGV4dEJvdW5k
YXJ5RmluZGVyOjpXb3JkICkgeworICAgICAgICAgICAgLy8gV2UgYXJlIHRoZSBzYW1lIQorICAg
ICAgICAgICAgaXRlcmF0b3ItPnRvU3RhcnQoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICppdGVyYXRvciA9IFFUZXh0Qm91bmRhcnlGaW5kZXIoUVRleHRCb3VuZGFy
eUZpbmRlcjo6V29yZCwgKGNvbnN0IFFDaGFyICopc3RyaW5nLCBsZW5ndGgsIGJ1ZmZlciwgc2l6
ZW9mKGJ1ZmZlcikpOworICAgICAgICAgICAgdGVtcEJ1Zj1zdHJpbmc7CisgICAgICAgICAgICB0
ZW1wTGVuPWxlbmd0aDsKKyAgICAgICAgICAgIHR5cGU9UVRleHRCb3VuZGFyeUZpbmRlcjo6V29y
ZDsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEJyZWFrSXRlcmF0
b3IqPihpdGVyYXRvcik7CiAgICAgfQogCkBAIC01MywxMCArNjgsMjIgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIHsKICAgICAgICAgaWYgKCFzdHJpbmcgfHwgIWxlbmd0aCkKICAgICAgICAg
ICAgIHJldHVybiAwOwotICAgICAgICBpZiAoIWl0ZXJhdG9yKQorICAgICAgICBpZiAoIWl0ZXJh
dG9yKSB7CiAgICAgICAgICAgICBpdGVyYXRvciA9IG5ldyBRVGV4dEJvdW5kYXJ5RmluZGVyOwot
Ci0gICAgICAgICppdGVyYXRvciA9IFFUZXh0Qm91bmRhcnlGaW5kZXIoUVRleHRCb3VuZGFyeUZp
bmRlcjo6R3JhcGhlbWUsIChjb25zdCBRQ2hhciAqKXN0cmluZywgbGVuZ3RoLCBidWZmZXIsIHNp
emVvZihidWZmZXIpKTsKKyAgICAgICAgICAgIHRlbXBCdWY9MDsKKyAgICAgICAgICAgIHRlbXBM
ZW49LTE7CisgICAgICAgICAgICB0eXBlPVFUZXh0Qm91bmRhcnlGaW5kZXI6OkdyYXBoZW1lOwor
ICAgICAgICB9CisgICAgICAgIGlmKCB0ZW1wQnVmID09IHN0cmluZyAmJiB0ZW1wTGVuID09IGxl
bmd0aCAmJiB0eXBlID09IFFUZXh0Qm91bmRhcnlGaW5kZXI6OkdyYXBoZW1lICkgeworICAgICAg
ICAgICAgLy8gV2UgYXJlIHRoZSBzYW1lIQorICAgICAgICAgICAgaXRlcmF0b3ItPnRvU3RhcnQo
KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICppdGVyYXRvciA9IFFU
ZXh0Qm91bmRhcnlGaW5kZXIoUVRleHRCb3VuZGFyeUZpbmRlcjo6R3JhcGhlbWUsIChjb25zdCBR
Q2hhciAqKXN0cmluZywgbGVuZ3RoLCBidWZmZXIsIHNpemVvZihidWZmZXIpKTsKKyAgICAgICAg
ICAgIHRlbXBCdWY9c3RyaW5nOworICAgICAgICAgICAgdGVtcExlbj1sZW5ndGg7CisgICAgICAg
ICAgICB0eXBlPVFUZXh0Qm91bmRhcnlGaW5kZXI6OkdyYXBoZW1lOworICAgICAgICB9CiAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXh0QnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKTsKICAg
ICB9CiAKQEAgLTcwLDEwICs5NywyMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0
YXRpYyBRVGV4dEJvdW5kYXJ5RmluZGVyICppdGVyYXRvciA9IDA7CiAgICAgICAgIGlmICghc3Ry
aW5nIHx8ICFsZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKCFpdGVy
YXRvcikKKyAgICAgICAgaWYgKCFpdGVyYXRvcikgewogICAgICAgICAgICAgaXRlcmF0b3IgPSBu
ZXcgUVRleHRCb3VuZGFyeUZpbmRlcjsKLQotICAgICAgICAqaXRlcmF0b3IgPSBRVGV4dEJvdW5k
YXJ5RmluZGVyKFFUZXh0Qm91bmRhcnlGaW5kZXI6OkxpbmUsIChjb25zdCBRQ2hhciAqKXN0cmlu
ZywgbGVuZ3RoLCBidWZmZXIsIHNpemVvZihidWZmZXIpKTsKKyAgICAgICAgICAgIHRlbXBCdWY9
MDsKKyAgICAgICAgICAgIHRlbXBMZW49LTE7CisgICAgICAgICAgICB0eXBlPVFUZXh0Qm91bmRh
cnlGaW5kZXI6OkxpbmU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmKCB0ZW1wQnVm
ID09IHN0cmluZyAmJiB0ZW1wTGVuID09IGxlbmd0aCAmJiB0eXBlID09IFFUZXh0Qm91bmRhcnlG
aW5kZXI6OkxpbmUgKSB7CisgICAgICAgICAgICAvLyBXZSBhcmUgdGhlIHNhbWUhCisgICAgICAg
ICAgICBpdGVyYXRvci0+dG9TdGFydCgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgKml0ZXJhdG9yID0gUVRleHRCb3VuZGFyeUZpbmRlcihRVGV4dEJvdW5kYXJ5Rmlu
ZGVyOjpMaW5lLCAoY29uc3QgUUNoYXIgKilzdHJpbmcsIGxlbmd0aCwgYnVmZmVyLCBzaXplb2Yo
YnVmZmVyKSk7CisgICAgICAgICAgICB0ZW1wQnVmPXN0cmluZzsKKyAgICAgICAgICAgIHRlbXBM
ZW49bGVuZ3RoOworICAgICAgICAgICAgdHlwZT1RVGV4dEJvdW5kYXJ5RmluZGVyOjpMaW5lOwor
ICAgICAgICB9CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXh0QnJlYWtJdGVyYXRvcio+
KGl0ZXJhdG9yKTsKICAgICB9CiAKQEAgLTgxLDEwICsxMjEsMjMgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIHsKICAgICAgICAgaWYgKCFzdHJpbmcgfHwgIWxlbmd0aCkKICAgICAgICAgICAg
IHJldHVybiAwOwotICAgICAgICBpZiAoIWl0ZXJhdG9yKQorICAgICAgICBpZiAoIWl0ZXJhdG9y
KSB7CiAgICAgICAgICAgICBpdGVyYXRvciA9IG5ldyBRVGV4dEJvdW5kYXJ5RmluZGVyOwotCi0g
ICAgICAgICppdGVyYXRvciA9IFFUZXh0Qm91bmRhcnlGaW5kZXIoUVRleHRCb3VuZGFyeUZpbmRl
cjo6U2VudGVuY2UsIChjb25zdCBRQ2hhciAqKXN0cmluZywgbGVuZ3RoLCBidWZmZXIsIHNpemVv
ZihidWZmZXIpKTsKKyAgICAgICAgICAgIHRlbXBCdWY9MDsKKyAgICAgICAgICAgIHRlbXBMZW49
LTE7CisgICAgICAgICAgICB0eXBlPVFUZXh0Qm91bmRhcnlGaW5kZXI6OlNlbnRlbmNlOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBpZiggdGVtcEJ1ZiA9PSBzdHJpbmcgJiYgdGVtcExl
biA9PSBsZW5ndGggJiYgdHlwZSA9PSBRVGV4dEJvdW5kYXJ5RmluZGVyOjpTZW50ZW5jZSApIHsK
KyAgICAgICAgICAgIC8vIFdlIGFyZSB0aGUgc2FtZSEKKyAgICAgICAgICAgIGl0ZXJhdG9yLT50
b1N0YXJ0KCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAqaXRlcmF0
b3IgPSBRVGV4dEJvdW5kYXJ5RmluZGVyKFFUZXh0Qm91bmRhcnlGaW5kZXI6OlNlbnRlbmNlLCAo
Y29uc3QgUUNoYXIgKilzdHJpbmcsIGxlbmd0aCwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7Cisg
ICAgICAgICAgICB0ZW1wQnVmPXN0cmluZzsKKyAgICAgICAgICAgIHRlbXBMZW49bGVuZ3RoOwor
ICAgICAgICAgICAgdHlwZT1RVGV4dEJvdW5kYXJ5RmluZGVyOjpTZW50ZW5jZTsKKyAgICAgICAg
fQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEJyZWFrSXRlcmF0b3IqPihpdGVyYXRv
cik7CiAgICAgfQogCg==
</data>
<flag name="review"
          id="42099"
          type_id="1"
          status="-"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57500</attachid>
            <date>2010-05-31 17:05:43 -0700</date>
            <delta_ts>2010-05-31 19:33:25 -0700</delta_ts>
            <desc>patch v2</desc>
            <filename>39958v2.patch</filename>
            <type>text/plain</type>
            <size>4537</size>
            <attacher name="David Leong">david.leong</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDQ1NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMDUtMzEgIERhdmlkIExlb25nICA8ZGF2aWQubGVvbmdAbm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtRdF0gVGV4dEJyZWFrSXRlcmF0b3IgUVQgcGVyZm9ybWFuY2UKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5OTU4CisgICAgICAgIAorICAgICAgICBS
ZXdvcmsgVGV4dEJyZWFrSXRlcmF0b3JRdCBjbGFzcyB0byBjYWNoZSBsYXN0IHBhcnNlZCBkYXRh
IGJ1ZmZlci4KKyAgICAgICAgVGhpcyBpbmNyZWFzZXMgcGVyZm9ybWFuY2Ugb2YgbW91c2UgZG93
biBldmVudHMgd2hlbiBkaXZzIGhhdmUgbGFyZ2UKKyAgICAgICAgYW1vdW50cyBvZiB0ZXh0LiBU
aGlzIHNhdmVzIHRpbWUgZnJvbSBoYXZpbmcgaGFyZmJ1enogcmVwYXJzZSB0aGUgdGV4dAorICAg
ICAgICBzdHJpbmcgb3ZlciBhbmQgb3ZlciBhZ2Fpbi4KKworICAgICAgICAqIHBsYXRmb3JtL3Rl
eHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3b3JkQnJl
YWtJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpjaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OmxpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OnNlbnRlbmNlQnJlYWtJdGVyYXRvcik6CisKIDIwMTAtMDUtMzEgIEx1Y2FzIERlIE1hcmNoaSAg
PGx1Y2FzLmRlbWFyY2hpQHByb2Z1c2lvbi5tb2JpPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtl
bm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3F0
L1RleHRCcmVha0l0ZXJhdG9yUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
dGV4dC9xdC9UZXh0QnJlYWtJdGVyYXRvclF0LmNwcAkocmV2aXNpb24gNjA0NTApCisrKyBXZWJD
b3JlL3BsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDI3ICszNyw0MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgfTsKICAgICBz
dGF0aWMgUVRleHRCb3VuZGFyeUZpbmRlciogaXRlcmF0b3IgPSAwOwogICAgIHN0YXRpYyB1bnNp
Z25lZCBjaGFyIGJ1ZmZlclsxMDI0XTsKLQotICAgIFRleHRCcmVha0l0ZXJhdG9yKiB3b3JkQnJl
YWtJdGVyYXRvcihjb25zdCBVQ2hhciogc3RyaW5nLCBpbnQgbGVuZ3RoKQorICAgIHN0YXRpYyBj
b25zdCBVQ2hhciogcHJldnN0cmluZzsKKyAgICBzdGF0aWMgaW50IHByZXZsZW5ndGg7CisgICAg
c3RhdGljIFFUZXh0Qm91bmRhcnlGaW5kZXI6OkJvdW5kYXJ5VHlwZSBwcmV2dHlwZTsKKyAgICAK
KyAgICBUZXh0QnJlYWtJdGVyYXRvciogY3JlYXRlQnJlYWtJdGVyYXRvcihjb25zdCBVQ2hhciog
c3RyaW5nLCBpbnQgbGVuZ3RoLCBRVGV4dEJvdW5kYXJ5RmluZGVyOjpCb3VuZGFyeVR5cGUgdHlw
ZSApIAogICAgIHsKICAgICAgICAgaWYgKCFzdHJpbmcgfHwgIWxlbmd0aCkKICAgICAgICAgICAg
IHJldHVybiAwOwotICAgICAgICBpZiAoIWl0ZXJhdG9yKQorICAgICAgICBpZiAoIWl0ZXJhdG9y
KSB7CiAgICAgICAgICAgICBpdGVyYXRvciA9IG5ldyBRVGV4dEJvdW5kYXJ5RmluZGVyOwotCi0g
ICAgICAgICppdGVyYXRvciA9IFFUZXh0Qm91bmRhcnlGaW5kZXIoUVRleHRCb3VuZGFyeUZpbmRl
cjo6V29yZCwgKGNvbnN0IFFDaGFyICopc3RyaW5nLCBsZW5ndGgsIGJ1ZmZlciwgc2l6ZW9mKGJ1
ZmZlcikpOworICAgICAgICAgICAgcHJldnN0cmluZyA9IDA7CisgICAgICAgICAgICBwcmV2bGVu
Z3RoID0gLTE7CisgICAgICAgICAgICBwcmV2dHlwZSA9IHR5cGU7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIC8vIFRyeSB0byByZXVzZSB0aGUgaXRlcmF0b3IgaWYgaXQgd2FzIHByZXZp
b3VzbHkgaW5pdGVkIHdpdGggdGhlIHNhbWUgc3RyaW5nCisgICAgICAgIC8vCisgICAgICAgIGlm
IChwcmV2c3RyaW5nID09IHN0cmluZyAmJiBwcmV2bGVuZ3RoID09IGxlbmd0aCAmJiBwcmV2dHlw
ZSA9PSB0eXBlKSB7CisgICAgICAgICAgICAvLyBXZSBhcmUgdGhlIHNhbWUhCisgICAgICAgICAg
ICBpdGVyYXRvci0+dG9TdGFydCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgKml0
ZXJhdG9yID0gUVRleHRCb3VuZGFyeUZpbmRlcih0eXBlLCAoY29uc3QgUUNoYXIgKilzdHJpbmcs
IGxlbmd0aCwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7CisgICAgICAgICAgICBwcmV2c3RyaW5n
ID0gc3RyaW5nOworICAgICAgICAgICAgcHJldmxlbmd0aCA9IGxlbmd0aDsKKyAgICAgICAgICAg
IHByZXZ0eXBlID0gdHlwZTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
VGV4dEJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcik7CiAgICAgfQorICAgIAorICAgIFRleHRCcmVh
a0l0ZXJhdG9yKiB3b3JkQnJlYWtJdGVyYXRvcihjb25zdCBVQ2hhciogc3RyaW5nLCBpbnQgbGVu
Z3RoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUJyZWFrSXRlcmF0b3Ioc3RyaW5nLCBs
ZW5ndGgsIFFUZXh0Qm91bmRhcnlGaW5kZXI6OldvcmQpOworICAgIH0KIAogICAgIFRleHRCcmVh
a0l0ZXJhdG9yKiBjaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKGNvbnN0IFVDaGFyKiBzdHJpbmcsIGlu
dCBsZW5ndGgpCiAgICAgewotICAgICAgICBpZiAoIXN0cmluZyB8fCAhbGVuZ3RoKQotICAgICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmICghaXRlcmF0b3IpCi0gICAgICAgICAgICBpdGVy
YXRvciA9IG5ldyBRVGV4dEJvdW5kYXJ5RmluZGVyOwotCi0gICAgICAgICppdGVyYXRvciA9IFFU
ZXh0Qm91bmRhcnlGaW5kZXIoUVRleHRCb3VuZGFyeUZpbmRlcjo6R3JhcGhlbWUsIChjb25zdCBR
Q2hhciAqKXN0cmluZywgbGVuZ3RoLCBidWZmZXIsIHNpemVvZihidWZmZXIpKTsKLSAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFRleHRCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpOworICAgICAg
ICByZXR1cm4gY3JlYXRlQnJlYWtJdGVyYXRvcihzdHJpbmcsIGxlbmd0aCwgUVRleHRCb3VuZGFy
eUZpbmRlcjo6R3JhcGhlbWUpOwogICAgIH0KIAogICAgIFRleHRCcmVha0l0ZXJhdG9yKiBjdXJz
b3JNb3ZlbWVudEl0ZXJhdG9yKGNvbnN0IFVDaGFyKiBzdHJpbmcsIGludCBsZW5ndGgpCkBAIC02
NywyNSArODMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgVGV4dEJyZWFrSXRlcmF0
b3IqIGxpbmVCcmVha0l0ZXJhdG9yKGNvbnN0IFVDaGFyKiBzdHJpbmcsIGludCBsZW5ndGgpCiAg
ICAgewotICAgICAgICBzdGF0aWMgUVRleHRCb3VuZGFyeUZpbmRlciAqaXRlcmF0b3IgPSAwOwot
ICAgICAgICBpZiAoIXN0cmluZyB8fCAhbGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgICAgIGlmICghaXRlcmF0b3IpCi0gICAgICAgICAgICBpdGVyYXRvciA9IG5ldyBRVGV4dEJv
dW5kYXJ5RmluZGVyOwotCi0gICAgICAgICppdGVyYXRvciA9IFFUZXh0Qm91bmRhcnlGaW5kZXIo
UVRleHRCb3VuZGFyeUZpbmRlcjo6TGluZSwgKGNvbnN0IFFDaGFyICopc3RyaW5nLCBsZW5ndGgs
IGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4
dEJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcik7CisgICAgICAgIHJldHVybiBjcmVhdGVCcmVha0l0
ZXJhdG9yKHN0cmluZywgbGVuZ3RoLCBRVGV4dEJvdW5kYXJ5RmluZGVyOjpMaW5lKTsKICAgICB9
CiAKICAgICBUZXh0QnJlYWtJdGVyYXRvciogc2VudGVuY2VCcmVha0l0ZXJhdG9yKGNvbnN0IFVD
aGFyKiBzdHJpbmcsIGludCBsZW5ndGgpCiAgICAgewotICAgICAgICBpZiAoIXN0cmluZyB8fCAh
bGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmICghaXRlcmF0b3IpCi0g
ICAgICAgICAgICBpdGVyYXRvciA9IG5ldyBRVGV4dEJvdW5kYXJ5RmluZGVyOwotCi0gICAgICAg
ICppdGVyYXRvciA9IFFUZXh0Qm91bmRhcnlGaW5kZXIoUVRleHRCb3VuZGFyeUZpbmRlcjo6U2Vu
dGVuY2UsIChjb25zdCBRQ2hhciAqKXN0cmluZywgbGVuZ3RoLCBidWZmZXIsIHNpemVvZihidWZm
ZXIpKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRCcmVha0l0ZXJhdG9yKj4oaXRl
cmF0b3IpOworICAgICAgICByZXR1cm4gY3JlYXRlQnJlYWtJdGVyYXRvcihzdHJpbmcsIGxlbmd0
aCwgUVRleHRCb3VuZGFyeUZpbmRlcjo6U2VudGVuY2UpOwogICAgIH0KIAogICAgIGludCB0ZXh0
QnJlYWtGaXJzdChUZXh0QnJlYWtJdGVyYXRvciogYmkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57508</attachid>
            <date>2010-05-31 19:33:25 -0700</date>
            <delta_ts>2010-06-08 10:03:04 -0700</delta_ts>
            <desc>Fixed based on Kenneth&apos;s latest comments.</desc>
            <filename>39958v3.patch</filename>
            <type>text/plain</type>
            <size>4888</size>
            <attacher name="David Leong">david.leong</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDQ1NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMDUtMzEgIERhdmlkIExlb25nICA8ZGF2aWQubGVvbmdAbm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtRdF0gVGV4dEJyZWFrSXRlcmF0b3IgUVQgcGVyZm9ybWFuY2UKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5OTU4CisgICAgICAgIAorICAgICAgICBS
ZXdvcmsgVGV4dEJyZWFrSXRlcmF0b3JRdCBjbGFzcyB0byBjYWNoZSBsYXN0IHBhcnNlZCBkYXRh
IGJ1ZmZlci4KKyAgICAgICAgVGhpcyBpbmNyZWFzZXMgcGVyZm9ybWFuY2Ugb2YgbW91c2UgZG93
biBldmVudHMgd2hlbiBkaXZzIGhhdmUgbGFyZ2UKKyAgICAgICAgYW1vdW50cyBvZiB0ZXh0LiBU
aGlzIHNhdmVzIHRpbWUgZnJvbSBoYXZpbmcgaGFyZmJ1enogcmVwYXJzZSB0aGUgdGV4dAorICAg
ICAgICBzdHJpbmcgb3ZlciBhbmQgb3ZlciBhZ2Fpbi4KKworICAgICAgICAqIHBsYXRmb3JtL3Rl
eHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3b3JkQnJl
YWtJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpjaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OmxpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OnNlbnRlbmNlQnJlYWtJdGVyYXRvcik6CisKIDIwMTAtMDUtMzEgIEx1Y2FzIERlIE1hcmNoaSAg
PGx1Y2FzLmRlbWFyY2hpQHByb2Z1c2lvbi5tb2JpPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtl
bm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3F0
L1RleHRCcmVha0l0ZXJhdG9yUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
dGV4dC9xdC9UZXh0QnJlYWtJdGVyYXRvclF0LmNwcAkocmV2aXNpb24gNjA0NTApCisrKyBXZWJD
b3JlL3BsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDI3ICszNyw0NSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgfTsKICAgICBz
dGF0aWMgUVRleHRCb3VuZGFyeUZpbmRlciogaXRlcmF0b3IgPSAwOwogICAgIHN0YXRpYyB1bnNp
Z25lZCBjaGFyIGJ1ZmZlclsxMDI0XTsKLQotICAgIFRleHRCcmVha0l0ZXJhdG9yKiB3b3JkQnJl
YWtJdGVyYXRvcihjb25zdCBVQ2hhciogc3RyaW5nLCBpbnQgbGVuZ3RoKQorICAgIHN0YXRpYyBj
b25zdCBVQ2hhciogcHJldmlvdXNzdHJpbmc7CisgICAgc3RhdGljIGludCBwcmV2aW91c2xlbmd0
aDsKKyAgICBzdGF0aWMgUVRleHRCb3VuZGFyeUZpbmRlcjo6Qm91bmRhcnlUeXBlIHByZXZpb3Vz
dHlwZTsKKyAgICAKKyAgICBpbmxpbmUgVGV4dEJyZWFrSXRlcmF0b3IqIGNyZWF0ZUJyZWFrSXRl
cmF0b3IoY29uc3QgVUNoYXIqIHN0cmluZywgaW50IGxlbmd0aCwgUVRleHRCb3VuZGFyeUZpbmRl
cjo6Qm91bmRhcnlUeXBlIHR5cGUpIAogICAgIHsKICAgICAgICAgaWYgKCFzdHJpbmcgfHwgIWxl
bmd0aCkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBpZiAoIWl0ZXJhdG9yKQorICAg
ICAgICBpZiAoIWl0ZXJhdG9yKSB7CiAgICAgICAgICAgICBpdGVyYXRvciA9IG5ldyBRVGV4dEJv
dW5kYXJ5RmluZGVyOwotCi0gICAgICAgICppdGVyYXRvciA9IFFUZXh0Qm91bmRhcnlGaW5kZXIo
UVRleHRCb3VuZGFyeUZpbmRlcjo6V29yZCwgKGNvbnN0IFFDaGFyICopc3RyaW5nLCBsZW5ndGgs
IGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4
dEJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcik7CisgICAgICAgICAgICBwcmV2aW91c3N0cmluZyA9
IDA7CisgICAgICAgICAgICBwcmV2aW91c2xlbmd0aCA9IDA7CisgICAgICAgICAgICBwcmV2aW91
c3R5cGUgPSB0eXBlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBUcnkgdG8gcmV1
c2UgdGhlIGl0ZXJhdG9yIGlmIGl0IHdhcyBwcmV2aW91c2x5IGluaXRpYWxpemVkIHdpdGggdGhl
IHNhbWUgc3RyaW5nLgorICAgICAgICBpZiAocHJldmlvdXN0eXBlID09IHR5cGUgJiYgcHJldmlv
dXNsZW5ndGggPT0gbGVuZ3RoICYmIHByZXZpb3Vzc3RyaW5nID09IHN0cmluZykgeworICAgICAg
ICAgICAgLy8gU2FtZSBhcyBsYXN0IHRpbWUsIHJldXNlIGl0ZXJhdG9yLiAKKyAgICAgICAgICAg
IGl0ZXJhdG9yLT50b1N0YXJ0KCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBC
b3VuZGFyaWVzIGFyZSBvZnRlbiByZWNhbGN1bGF0ZWQgaW4gSFRNTEVkaXRpbmcgYWxnb3JpdGht
cyBvbiBtb3VzZSBldmVudHMuIFRoaXMgY2F1c2VzCisgICAgICAgICAgICAvLyB0aGUgc2FtZSBz
dHJpbmcgdG8gYmUgaW5pdGlhbGl6ZWQgdG8gZmluZCBicmVhayBsb2NhdGlvbnMsIHNvIHdlIHN0
b3JlIHRoZSBpdGVyYXRvciBkYXRhCisgICAgICAgICAgICAvLyBmb3IgcmV1c2UuCisgICAgICAg
ICAgICAqaXRlcmF0b3IgPSBRVGV4dEJvdW5kYXJ5RmluZGVyKHR5cGUsIChjb25zdCBRQ2hhciAq
KXN0cmluZywgbGVuZ3RoLCBidWZmZXIsIHNpemVvZihidWZmZXIpKTsKKyAgICAgICAgICAgIHBy
ZXZpb3Vzc3RyaW5nID0gc3RyaW5nOworICAgICAgICAgICAgcHJldmlvdXNsZW5ndGggPSBsZW5n
dGg7CisgICAgICAgICAgICBwcmV2aW91c3R5cGUgPSB0eXBlOworICAgICAgICB9CisgICAgICAg
IHJldHVybiAoVGV4dEJyZWFrSXRlcmF0b3IqKShpdGVyYXRvcik7CisgICAgfQorICAgIAorICAg
IFRleHRCcmVha0l0ZXJhdG9yKiB3b3JkQnJlYWtJdGVyYXRvcihjb25zdCBVQ2hhciogc3RyaW5n
LCBpbnQgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUJyZWFrSXRlcmF0b3Io
c3RyaW5nLCBsZW5ndGgsIFFUZXh0Qm91bmRhcnlGaW5kZXI6OldvcmQpOwogICAgIH0KIAogICAg
IFRleHRCcmVha0l0ZXJhdG9yKiBjaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKGNvbnN0IFVDaGFyKiBz
dHJpbmcsIGludCBsZW5ndGgpCiAgICAgewotICAgICAgICBpZiAoIXN0cmluZyB8fCAhbGVuZ3Ro
KQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmICghaXRlcmF0b3IpCi0gICAgICAg
ICAgICBpdGVyYXRvciA9IG5ldyBRVGV4dEJvdW5kYXJ5RmluZGVyOwotCi0gICAgICAgICppdGVy
YXRvciA9IFFUZXh0Qm91bmRhcnlGaW5kZXIoUVRleHRCb3VuZGFyeUZpbmRlcjo6R3JhcGhlbWUs
IChjb25zdCBRQ2hhciAqKXN0cmluZywgbGVuZ3RoLCBidWZmZXIsIHNpemVvZihidWZmZXIpKTsK
LSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3Ip
OworICAgICAgICByZXR1cm4gY3JlYXRlQnJlYWtJdGVyYXRvcihzdHJpbmcsIGxlbmd0aCwgUVRl
eHRCb3VuZGFyeUZpbmRlcjo6R3JhcGhlbWUpOwogICAgIH0KIAogICAgIFRleHRCcmVha0l0ZXJh
dG9yKiBjdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKGNvbnN0IFVDaGFyKiBzdHJpbmcsIGludCBsZW5n
dGgpCkBAIC02NywyNSArODUsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgVGV4dEJy
ZWFrSXRlcmF0b3IqIGxpbmVCcmVha0l0ZXJhdG9yKGNvbnN0IFVDaGFyKiBzdHJpbmcsIGludCBs
ZW5ndGgpCiAgICAgewotICAgICAgICBzdGF0aWMgUVRleHRCb3VuZGFyeUZpbmRlciAqaXRlcmF0
b3IgPSAwOwotICAgICAgICBpZiAoIXN0cmluZyB8fCAhbGVuZ3RoKQotICAgICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgICAgIGlmICghaXRlcmF0b3IpCi0gICAgICAgICAgICBpdGVyYXRvciA9IG5l
dyBRVGV4dEJvdW5kYXJ5RmluZGVyOwotCi0gICAgICAgICppdGVyYXRvciA9IFFUZXh0Qm91bmRh
cnlGaW5kZXIoUVRleHRCb3VuZGFyeUZpbmRlcjo6TGluZSwgKGNvbnN0IFFDaGFyICopc3RyaW5n
LCBsZW5ndGgsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpOwotICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8VGV4dEJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcik7CisgICAgICAgIHJldHVybiBjcmVh
dGVCcmVha0l0ZXJhdG9yKHN0cmluZywgbGVuZ3RoLCBRVGV4dEJvdW5kYXJ5RmluZGVyOjpMaW5l
KTsKICAgICB9CiAKICAgICBUZXh0QnJlYWtJdGVyYXRvciogc2VudGVuY2VCcmVha0l0ZXJhdG9y
KGNvbnN0IFVDaGFyKiBzdHJpbmcsIGludCBsZW5ndGgpCiAgICAgewotICAgICAgICBpZiAoIXN0
cmluZyB8fCAhbGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmICghaXRl
cmF0b3IpCi0gICAgICAgICAgICBpdGVyYXRvciA9IG5ldyBRVGV4dEJvdW5kYXJ5RmluZGVyOwot
Ci0gICAgICAgICppdGVyYXRvciA9IFFUZXh0Qm91bmRhcnlGaW5kZXIoUVRleHRCb3VuZGFyeUZp
bmRlcjo6U2VudGVuY2UsIChjb25zdCBRQ2hhciAqKXN0cmluZywgbGVuZ3RoLCBidWZmZXIsIHNp
emVvZihidWZmZXIpKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRCcmVha0l0ZXJh
dG9yKj4oaXRlcmF0b3IpOworICAgICAgICByZXR1cm4gY3JlYXRlQnJlYWtJdGVyYXRvcihzdHJp
bmcsIGxlbmd0aCwgUVRleHRCb3VuZGFyeUZpbmRlcjo6U2VudGVuY2UpOwogICAgIH0KIAogICAg
IGludCB0ZXh0QnJlYWtGaXJzdChUZXh0QnJlYWtJdGVyYXRvciogYmkpCg==
</data>
<flag name="review"
          id="42110"
          type_id="1"
          status="-"
          setter="kenneth"
    />
    <flag name="commit-queue"
          id="42111"
          type_id="3"
          status="-"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57586</attachid>
            <date>2010-06-01 13:12:00 -0700</date>
            <delta_ts>2010-06-08 10:03:36 -0700</delta_ts>
            <desc>Patch, lets try this again.</desc>
            <filename>39958v4.patch</filename>
            <type>text/plain</type>
            <size>11442</size>
            <attacher name="David Leong">david.leong</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDQ1NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMDUtMzEgIERhdmlkIExlb25nICA8ZGF2aWQubGVvbmdAbm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtRdF0gVGV4dEJyZWFrSXRlcmF0b3IgUXQgcGVyZm9ybWFuY2UKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5OTU4CisgICAgICAgIAorICAgICAgICBS
ZXdvcmsgVGV4dEJyZWFrSXRlcmF0b3JRdCBjbGFzcyB0byBjYWNoZSBsYXN0IHBhcnNlZCBkYXRh
IGJ1ZmZlci4KKyAgICAgICAgVGhpcyBpbmNyZWFzZXMgcGVyZm9ybWFuY2Ugb2YgbW91c2UgZG93
biBldmVudHMgd2hlbiBkaXZzIGhhdmUgbGFyZ2UKKyAgICAgICAgYW1vdW50cyBvZiB0ZXh0LiBU
aGlzIHNhdmVzIHRpbWUgZnJvbSBoYXZpbmcgaGFyZmJ1enogcmVwYXJzZSB0aGUgdGV4dAorICAg
ICAgICBzdHJpbmcgb3ZlciBhbmQgb3ZlciBhZ2Fpbi4KKworICAgICAgICAqIHBsYXRmb3JtL3Rl
eHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3b3JkQnJl
YWtJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpjaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OmxpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OnNlbnRlbmNlQnJlYWtJdGVyYXRvcik6CisKIDIwMTAtMDUtMzEgIEx1Y2FzIERlIE1hcmNoaSAg
PGx1Y2FzLmRlbWFyY2hpQHByb2Z1c2lvbi5tb2JpPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtl
bm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRCcmVha0l0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRCcmVha0l0ZXJhdG9yLmgJKHJldmlzaW9uIDYwNDUwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDEzIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBUZXh0QnJlYWtJdGVyYXRvciogbGluZUJyZWFrSXRl
cmF0b3IoY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoKTsKICAgICBUZXh0QnJlYWtJdGVyYXRvciog
c2VudGVuY2VCcmVha0l0ZXJhdG9yKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCk7CiAKKyAgICAv
LyBPdmVybG9hZGVkIGZ1bmN0aW9ucyB3aXRoIG9wdGlvbmFsIGhhc2gga2V5CisgICAgVGV4dEJy
ZWFrSXRlcmF0b3IqIGNoYXJhY3RlckJyZWFrSXRlcmF0b3IoY29uc3QgVUNoYXIqLCBpbnQgbGVu
Z3RoLCBpbnQgaGFzaCk7CisgICAgVGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvck1vdmVtZW50SXRl
cmF0b3IoY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoLCBpbnQgaGFzaCk7CisgICAgVGV4dEJyZWFr
SXRlcmF0b3IqIHdvcmRCcmVha0l0ZXJhdG9yKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgaW50
IGhhc2gpOworICAgIFRleHRCcmVha0l0ZXJhdG9yKiBsaW5lQnJlYWtJdGVyYXRvcihjb25zdCBV
Q2hhciosIGludCBsZW5ndGgsIGludCBoYXNoKTsKKyAgICBUZXh0QnJlYWtJdGVyYXRvciogc2Vu
dGVuY2VCcmVha0l0ZXJhdG9yKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgaW50IGhhc2gpOwor
CiAgICAgaW50IHRleHRCcmVha0ZpcnN0KFRleHRCcmVha0l0ZXJhdG9yKik7CiAgICAgaW50IHRl
eHRCcmVha0xhc3QoVGV4dEJyZWFrSXRlcmF0b3IqKTsKICAgICBpbnQgdGV4dEJyZWFrTmV4dChU
ZXh0QnJlYWtJdGVyYXRvciopOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVh
a0l0ZXJhdG9ySUNVLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dEJyZWFrSXRlcmF0b3JJQ1UuY3BwCShyZXZpc2lvbiA2MDQ1MCkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvcklDVS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDYg
Kzg0LDMxIEBAIFRleHRCcmVha0l0ZXJhdG9yKiBzZW50ZW5jZUJyZWFrSXRlcmF0b3IKICAgICAg
ICAgc3RhdGljU2VudGVuY2VCcmVha0l0ZXJhdG9yLCBVQlJLX1NFTlRFTkNFLCBzdHJpbmcsIGxl
bmd0aCk7CiB9CiAKK1RleHRCcmVha0l0ZXJhdG9yKiBjaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKGNv
bnN0IFVDaGFyKiBzdHJpbmcsIGludCBsZW5ndGgsIGludCkKK3sKKyAgICByZXR1cm4gY2hhcmFj
dGVyQnJlYWtJdGVyYXRvcihzdHJpbmcsIGxlbmd0aCk7Cit9CisKK1RleHRCcmVha0l0ZXJhdG9y
KiBjdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKGNvbnN0IFVDaGFyKiBzdHJpbmcsIGludCBsZW5ndGgs
IGludCkKK3sKKyAgICByZXR1cm4gY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihzdHJpbmcsIGxlbmd0
aCk7Cit9CisKK1RleHRCcmVha0l0ZXJhdG9yKiB3b3JkQnJlYWtJdGVyYXRvcihjb25zdCBVQ2hh
ciogc3RyaW5nLCBpbnQgbGVuZ3RoLCBpbnQpCit7CisgICAgcmV0dXJuIHdvcmRCcmVha0l0ZXJh
dG9yKHN0cmluZywgbGVuZ3RoKTsKK30KKworVGV4dEJyZWFrSXRlcmF0b3IqIGxpbmVCcmVha0l0
ZXJhdG9yKGNvbnN0IFVDaGFyKiBzdHJpbmcsIGludCBsZW5ndGgsIGludCkKK3sKKyAgICByZXR1
cm4gbGluZUJyZWFrSXRlcmF0b3Ioc3RyaW5nLCBsZW5ndGgpOworfQorCitUZXh0QnJlYWtJdGVy
YXRvciogc2VudGVuY2VCcmVha0l0ZXJhdG9yKGNvbnN0IFVDaGFyKiBzdHJpbmcsIGludCBsZW5n
dGgsIGludCkKK3sKKyAgICByZXR1cm4gc2VudGVuY2VCcmVha0l0ZXJhdG9yKHN0cmluZywgbGVu
Z3RoKTsKK30KKwogaW50IHRleHRCcmVha0ZpcnN0KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRv
cikKIHsKICAgICByZXR1cm4gdWJya19maXJzdChyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJh
dG9yKj4oaXRlcmF0b3IpKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9ndGsvVGV4dEJy
ZWFrSXRlcmF0b3JHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9n
dGsvVGV4dEJyZWFrSXRlcmF0b3JHdGsuY3BwCShyZXZpc2lvbiA2MDQ1MCkKKysrIFdlYkNvcmUv
cGxhdGZvcm0vdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JHdGsuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDgsNiArMTA4LDMxIEBAIFRleHRCcmVha0l0ZXJhdG9yKiBzZW50ZW5jZUJyZWFrSXRl
cmF0b3IKICAgICByZXR1cm4gc2V0VXBJdGVyYXRvcihjcmVhdGVkU2VudGVuY2VCcmVha0l0ZXJh
dG9yLCBzdGF0aWNTZW50ZW5jZUJyZWFrSXRlcmF0b3IsIFVCUktfU0VOVEVOQ0UsIHN0cmluZywg
bGVuZ3RoKTsKIH0KIAorVGV4dEJyZWFrSXRlcmF0b3IqIGNoYXJhY3RlckJyZWFrSXRlcmF0b3Io
Y29uc3QgVUNoYXIqIHN0cmluZywgaW50IGxlbmd0aCwgaW50KQoreworICAgIHJldHVybiBjaGFy
YWN0ZXJCcmVha0l0ZXJhdG9yKHN0cmluZywgbGVuZ3RoKTsKK30KKworVGV4dEJyZWFrSXRlcmF0
b3IqIGN1cnNvck1vdmVtZW50SXRlcmF0b3IoY29uc3QgVUNoYXIqIHN0cmluZywgaW50IGxlbmd0
aCwgaW50KQoreworICAgIHJldHVybiBjdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKHN0cmluZywgbGVu
Z3RoKTsKK30KKworVGV4dEJyZWFrSXRlcmF0b3IqIHdvcmRCcmVha0l0ZXJhdG9yKGNvbnN0IFVD
aGFyKiBzdHJpbmcsIGludCBsZW5ndGgsIGludCkKK3sKKyAgICByZXR1cm4gd29yZEJyZWFrSXRl
cmF0b3Ioc3RyaW5nLCBsZW5ndGgpOworfQorCitUZXh0QnJlYWtJdGVyYXRvciogbGluZUJyZWFr
SXRlcmF0b3IoY29uc3QgVUNoYXIqIHN0cmluZywgaW50IGxlbmd0aCwgaW50KQoreworICAgIHJl
dHVybiBsaW5lQnJlYWtJdGVyYXRvcihzdHJpbmcsIGxlbmd0aCk7Cit9CisKK1RleHRCcmVha0l0
ZXJhdG9yKiBzZW50ZW5jZUJyZWFrSXRlcmF0b3IoY29uc3QgVUNoYXIqIHN0cmluZywgaW50IGxl
bmd0aCwgaW50KQoreworICAgIHJldHVybiBzZW50ZW5jZUJyZWFrSXRlcmF0b3Ioc3RyaW5nLCBs
ZW5ndGgpOworfQorCiBpbnQgdGV4dEJyZWFrRmlyc3QoVGV4dEJyZWFrSXRlcmF0b3IqIGJpKQog
ewogICAgIC8vIHNlZSB0ZXh0QnJlYWtMYXN0CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQv
cXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L3F0L1RleHRCcmVha0l0ZXJhdG9yUXQuY3BwCShyZXZpc2lvbiA2MDQ1MCkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vdGV4dC9xdC9UZXh0QnJlYWtJdGVyYXRvclF0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzcsMjcgKzM3LDQzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB9OwogICAg
IHN0YXRpYyBRVGV4dEJvdW5kYXJ5RmluZGVyKiBpdGVyYXRvciA9IDA7CiAgICAgc3RhdGljIHVu
c2lnbmVkIGNoYXIgYnVmZmVyWzEwMjRdOwotCi0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIHdvcmRC
cmVha0l0ZXJhdG9yKGNvbnN0IFVDaGFyKiBzdHJpbmcsIGludCBsZW5ndGgpCisgICAgc3RhdGlj
IGludCBwcmV2aW91c0hhc2g7CisgICAgc3RhdGljIFFUZXh0Qm91bmRhcnlGaW5kZXI6OkJvdW5k
YXJ5VHlwZSBwcmV2aW91c1R5cGU7CisgICAgCisgICAgaW5saW5lIFRleHRCcmVha0l0ZXJhdG9y
KiBjcmVhdGVCcmVha0l0ZXJhdG9yKGNvbnN0IFVDaGFyKiBzdHJpbmcsIGludCBsZW5ndGgsIFFU
ZXh0Qm91bmRhcnlGaW5kZXI6OkJvdW5kYXJ5VHlwZSB0eXBlLCBpbnQgaGFzaCkgCiAgICAgewog
ICAgICAgICBpZiAoIXN0cmluZyB8fCAhbGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgICAgIGlmICghaXRlcmF0b3IpCisgICAgICAgIGlmICghaXRlcmF0b3IpIHsKICAgICAgICAg
ICAgIGl0ZXJhdG9yID0gbmV3IFFUZXh0Qm91bmRhcnlGaW5kZXI7Ci0KLSAgICAgICAgKml0ZXJh
dG9yID0gUVRleHRCb3VuZGFyeUZpbmRlcihRVGV4dEJvdW5kYXJ5RmluZGVyOjpXb3JkLCAoY29u
c3QgUUNoYXIgKilzdHJpbmcsIGxlbmd0aCwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7Ci0gICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXh0QnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKTsKKyAg
ICAgICAgICAgIHByZXZpb3VzSGFzaCA9IDA7CisgICAgICAgICAgICBwcmV2aW91c1R5cGUgPSB0
eXBlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBUcnkgdG8gcmV1c2UgdGhlIGl0
ZXJhdG9yIGlmIGl0IHdhcyBwcmV2aW91c2x5IGluaXRpYWxpemVkIHdpdGggdGhlIHNhbWUgc3Ry
aW5nLgorICAgICAgICAvLyBIYXNoIG9mIDAgbWVhbnMgaXQgaGFzIG5vIGhhc2gsIHNvIHdlIGFs
d2F5cyByZWNvbnN0cnVjdCBRVGV4dEJvdW5kYXJ5RmluZGVyLgorICAgICAgICBpZiAocHJldmlv
dXNUeXBlID09IHR5cGUgJiYgcHJldmlvdXNIYXNoID09IGhhc2ggJiYgcHJldmlvdXNIYXNoKSB7
CisgICAgICAgICAgICAvLyBTYW1lIGFzIGxhc3QgdGltZSwgcmV1c2UgaXRlcmF0b3IuIAorICAg
ICAgICAgICAgaXRlcmF0b3ItPnRvU3RhcnQoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIC8vIEJvdW5kYXJpZXMgYXJlIG9mdGVuIHJlY2FsY3VsYXRlZCBpbiBIVE1MRWRpdGluZyBh
bGdvcml0aG1zIG9uIG1vdXNlIGV2ZW50cy4gVGhpcyBjYXVzZXMKKyAgICAgICAgICAgIC8vIHRo
ZSBzYW1lIHN0cmluZyB0byBiZSBpbml0aWFsaXplZCB0byBmaW5kIGJyZWFrIGxvY2F0aW9ucywg
c28gd2Ugc3RvcmUgdGhlIGl0ZXJhdG9yIGRhdGEKKyAgICAgICAgICAgIC8vIGZvciByZXVzZS4K
KyAgICAgICAgICAgICppdGVyYXRvciA9IFFUZXh0Qm91bmRhcnlGaW5kZXIodHlwZSwgKGNvbnN0
IFFDaGFyICopc3RyaW5nLCBsZW5ndGgsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpOworICAgICAg
ICAgICAgcHJldmlvdXNIYXNoID0gaGFzaDsKKyAgICAgICAgICAgIHByZXZpb3VzVHlwZSA9IHR5
cGU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIChUZXh0QnJlYWtJdGVyYXRvciopKGl0ZXJh
dG9yKTsKKyAgICB9CisgICAgCisgICAgVGV4dEJyZWFrSXRlcmF0b3IqIHdvcmRCcmVha0l0ZXJh
dG9yKGNvbnN0IFVDaGFyKiBzdHJpbmcsIGludCBsZW5ndGgpCisgICAgeworICAgICAgICByZXR1
cm4gY3JlYXRlQnJlYWtJdGVyYXRvcihzdHJpbmcsIGxlbmd0aCwgUVRleHRCb3VuZGFyeUZpbmRl
cjo6V29yZCwgMCk7CiAgICAgfQogCiAgICAgVGV4dEJyZWFrSXRlcmF0b3IqIGNoYXJhY3RlckJy
ZWFrSXRlcmF0b3IoY29uc3QgVUNoYXIqIHN0cmluZywgaW50IGxlbmd0aCkKICAgICB7Ci0gICAg
ICAgIGlmICghc3RyaW5nIHx8ICFsZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAg
ICAgaWYgKCFpdGVyYXRvcikKLSAgICAgICAgICAgIGl0ZXJhdG9yID0gbmV3IFFUZXh0Qm91bmRh
cnlGaW5kZXI7Ci0KLSAgICAgICAgKml0ZXJhdG9yID0gUVRleHRCb3VuZGFyeUZpbmRlcihRVGV4
dEJvdW5kYXJ5RmluZGVyOjpHcmFwaGVtZSwgKGNvbnN0IFFDaGFyICopc3RyaW5nLCBsZW5ndGgs
IGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4
dEJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcik7CisgICAgICAgIHJldHVybiBjcmVhdGVCcmVha0l0
ZXJhdG9yKHN0cmluZywgbGVuZ3RoLCBRVGV4dEJvdW5kYXJ5RmluZGVyOjpHcmFwaGVtZSwgMCk7
CiAgICAgfQogCiAgICAgVGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvck1vdmVtZW50SXRlcmF0b3Io
Y29uc3QgVUNoYXIqIHN0cmluZywgaW50IGxlbmd0aCkKQEAgLTY3LDI3ICs4MywzOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICBUZXh0QnJlYWtJdGVyYXRvciogbGluZUJyZWFrSXRlcmF0
b3IoY29uc3QgVUNoYXIqIHN0cmluZywgaW50IGxlbmd0aCkKICAgICB7Ci0gICAgICAgIHN0YXRp
YyBRVGV4dEJvdW5kYXJ5RmluZGVyICppdGVyYXRvciA9IDA7Ci0gICAgICAgIGlmICghc3RyaW5n
IHx8ICFsZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKCFpdGVyYXRv
cikKLSAgICAgICAgICAgIGl0ZXJhdG9yID0gbmV3IFFUZXh0Qm91bmRhcnlGaW5kZXI7Ci0KLSAg
ICAgICAgKml0ZXJhdG9yID0gUVRleHRCb3VuZGFyeUZpbmRlcihRVGV4dEJvdW5kYXJ5RmluZGVy
OjpMaW5lLCAoY29uc3QgUUNoYXIgKilzdHJpbmcsIGxlbmd0aCwgYnVmZmVyLCBzaXplb2YoYnVm
ZmVyKSk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXh0QnJlYWtJdGVyYXRvcio+KGl0
ZXJhdG9yKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUJyZWFrSXRlcmF0b3Ioc3RyaW5nLCBsZW5n
dGgsIFFUZXh0Qm91bmRhcnlGaW5kZXI6OkxpbmUsIDApOwogICAgIH0KIAogICAgIFRleHRCcmVh
a0l0ZXJhdG9yKiBzZW50ZW5jZUJyZWFrSXRlcmF0b3IoY29uc3QgVUNoYXIqIHN0cmluZywgaW50
IGxlbmd0aCkKICAgICB7Ci0gICAgICAgIGlmICghc3RyaW5nIHx8ICFsZW5ndGgpCi0gICAgICAg
ICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKCFpdGVyYXRvcikKLSAgICAgICAgICAgIGl0ZXJh
dG9yID0gbmV3IFFUZXh0Qm91bmRhcnlGaW5kZXI7CisgICAgICAgIHJldHVybiBjcmVhdGVCcmVh
a0l0ZXJhdG9yKHN0cmluZywgbGVuZ3RoLCBRVGV4dEJvdW5kYXJ5RmluZGVyOjpTZW50ZW5jZSwg
MCk7CisgICAgfQorCisgICAgVGV4dEJyZWFrSXRlcmF0b3IqIGNoYXJhY3RlckJyZWFrSXRlcmF0
b3IoY29uc3QgVUNoYXIqIHN0cmluZywgaW50IGxlbmd0aCwgaW50IGhhc2gpCisgICAgeworICAg
ICAgICByZXR1cm4gY3JlYXRlQnJlYWtJdGVyYXRvcihzdHJpbmcsIGxlbmd0aCwgUVRleHRCb3Vu
ZGFyeUZpbmRlcjo6R3JhcGhlbWUsIGhhc2gpOworICAgIH0KIAotICAgICAgICAqaXRlcmF0b3Ig
PSBRVGV4dEJvdW5kYXJ5RmluZGVyKFFUZXh0Qm91bmRhcnlGaW5kZXI6OlNlbnRlbmNlLCAoY29u
c3QgUUNoYXIgKilzdHJpbmcsIGxlbmd0aCwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7Ci0gICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXh0QnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKTsKKyAg
ICBUZXh0QnJlYWtJdGVyYXRvciogY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihjb25zdCBVQ2hhciog
c3RyaW5nLCBpbnQgbGVuZ3RoLCBpbnQgaGFzaCkKKyAgICB7CisgICAgICAgIHJldHVybiBjcmVh
dGVCcmVha0l0ZXJhdG9yKHN0cmluZywgbGVuZ3RoLCBRVGV4dEJvdW5kYXJ5RmluZGVyOjpHcmFw
aGVtZSwgaGFzaCk7CiAgICAgfQogCisgICAgVGV4dEJyZWFrSXRlcmF0b3IqIHdvcmRCcmVha0l0
ZXJhdG9yKGNvbnN0IFVDaGFyKiBzdHJpbmcsIGludCBsZW5ndGgsIGludCBoYXNoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGNyZWF0ZUJyZWFrSXRlcmF0b3Ioc3RyaW5nLCBsZW5ndGgsIFFUZXh0
Qm91bmRhcnlGaW5kZXI6OldvcmQsIGhhc2gpOworICAgIH0KKyAgICAKKyAgICBUZXh0QnJlYWtJ
dGVyYXRvciogbGluZUJyZWFrSXRlcmF0b3IoY29uc3QgVUNoYXIqIHN0cmluZywgaW50IGxlbmd0
aCwgaW50IGhhc2gpCisgICAgeworICAgICAgICByZXR1cm4gY3JlYXRlQnJlYWtJdGVyYXRvcihz
dHJpbmcsIGxlbmd0aCwgUVRleHRCb3VuZGFyeUZpbmRlcjo6TGluZSwgaGFzaCk7CisgICAgfQor
ICAgIAorICAgIFRleHRCcmVha0l0ZXJhdG9yKiBzZW50ZW5jZUJyZWFrSXRlcmF0b3IoY29uc3Qg
VUNoYXIqIHN0cmluZywgaW50IGxlbmd0aCwgaW50IGhhc2gpCisgICAgeworICAgICAgICByZXR1
cm4gY3JlYXRlQnJlYWtJdGVyYXRvcihzdHJpbmcsIGxlbmd0aCwgUVRleHRCb3VuZGFyeUZpbmRl
cjo6U2VudGVuY2UsIGhhc2gpOworICAgIH0KKyAgICAKICAgICBpbnQgdGV4dEJyZWFrRmlyc3Qo
VGV4dEJyZWFrSXRlcmF0b3IqIGJpKQogICAgIHsKICAgICAgICAgYmktPnRvU3RhcnQoKTsKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW5jZS9UZXh0QnJlYWtJdGVyYXRvcldpbmNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luY2UvVGV4dEJyZWFrSXRl
cmF0b3JXaW5jZS5jcHAJKHJldmlzaW9uIDYwNDUwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L3dpbmNlL1RleHRCcmVha0l0ZXJhdG9yV2luY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzQs
NiArMjc0LDMxIEBAIFRleHRCcmVha0l0ZXJhdG9yKiBzZW50ZW5jZUJyZWFrSXRlcmF0b3IKICAg
ICByZXR1cm4gJml0ZXJhdG9yOwogfQogCitUZXh0QnJlYWtJdGVyYXRvciogY2hhcmFjdGVyQnJl
YWtJdGVyYXRvcihjb25zdCBVQ2hhciogc3RyaW5nLCBpbnQgbGVuZ3RoLCBpbnQpCit7CisgICAg
cmV0dXJuIGNoYXJhY3RlckJyZWFrSXRlcmF0b3Ioc3RyaW5nLCBsZW5ndGgpOworfQorCitUZXh0
QnJlYWtJdGVyYXRvciogY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihjb25zdCBVQ2hhciogc3RyaW5n
LCBpbnQgbGVuZ3RoLCBpbnQpCit7CisgICAgcmV0dXJuIGN1cnNvck1vdmVtZW50SXRlcmF0b3Io
c3RyaW5nLCBsZW5ndGgpOworfQorCitUZXh0QnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0
b3IoY29uc3QgVUNoYXIqIHN0cmluZywgaW50IGxlbmd0aCwgaW50KQoreworICAgIHJldHVybiB3
b3JkQnJlYWtJdGVyYXRvcihzdHJpbmcsIGxlbmd0aCk7Cit9CisKK1RleHRCcmVha0l0ZXJhdG9y
KiBsaW5lQnJlYWtJdGVyYXRvcihjb25zdCBVQ2hhciogc3RyaW5nLCBpbnQgbGVuZ3RoLCBpbnQp
Cit7CisgICAgcmV0dXJuIGxpbmVCcmVha0l0ZXJhdG9yKHN0cmluZywgbGVuZ3RoKTsKK30KKwor
VGV4dEJyZWFrSXRlcmF0b3IqIHNlbnRlbmNlQnJlYWtJdGVyYXRvcihjb25zdCBVQ2hhciogc3Ry
aW5nLCBpbnQgbGVuZ3RoLCBpbnQpCit7CisgICAgcmV0dXJuIHNlbnRlbmNlQnJlYWtJdGVyYXRv
cihzdHJpbmcsIGxlbmd0aCk7Cit9CisKIGludCB0ZXh0QnJlYWtGaXJzdChUZXh0QnJlYWtJdGVy
YXRvciogYnJlYWtJdGVyYXRvcikKIHsKICAgICByZXR1cm4gYnJlYWtJdGVyYXRvci0+Zmlyc3Qo
KTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCShyZXZpc2lvbiA2MDQ1MCkKKysrIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzU5LDcg
KzEzNTksNyBAQCB1bnNpZ25lZCBSZW5kZXJUZXh0OjpjYXJldE1heFJlbmRlcmVkT2ZmCiBpbnQg
UmVuZGVyVGV4dDo6cHJldmlvdXNPZmZzZXQoaW50IGN1cnJlbnQpIGNvbnN0CiB7CiAgICAgU3Ry
aW5nSW1wbCogc2kgPSBtX3RleHQuaW1wbCgpOwotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVy
YXRvciA9IGN1cnNvck1vdmVtZW50SXRlcmF0b3Ioc2ktPmNoYXJhY3RlcnMoKSwgc2ktPmxlbmd0
aCgpKTsKKyAgICBUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IgPSBjdXJzb3JNb3ZlbWVudEl0
ZXJhdG9yKHNpLT5jaGFyYWN0ZXJzKCksIHNpLT5sZW5ndGgoKSwgc2ktPmhhc2goKSk7CiAgICAg
aWYgKCFpdGVyYXRvcikKICAgICAgICAgcmV0dXJuIGN1cnJlbnQgLSAxOwogCkBAIC0xNDg0LDcg
KzE0ODQsNyBAQCBpbnQgUmVuZGVyVGV4dDo6cHJldmlvdXNPZmZzZXRGb3JCYWNrd2FyCiBpbnQg
UmVuZGVyVGV4dDo6bmV4dE9mZnNldChpbnQgY3VycmVudCkgY29uc3QKIHsKICAgICBTdHJpbmdJ
bXBsKiBzaSA9IG1fdGV4dC5pbXBsKCk7Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9y
ID0gY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihzaS0+Y2hhcmFjdGVycygpLCBzaS0+bGVuZ3RoKCkp
OworICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IGN1cnNvck1vdmVtZW50SXRlcmF0
b3Ioc2ktPmNoYXJhY3RlcnMoKSwgc2ktPmxlbmd0aCgpLCBzaS0+aGFzaCgpKTsKICAgICBpZiAo
IWl0ZXJhdG9yKQogICAgICAgICByZXR1cm4gY3VycmVudCArIDE7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76304</attachid>
            <date>2010-12-11 05:41:08 -0800</date>
            <delta_ts>2010-12-12 09:04:36 -0800</delta_ts>
            <desc>fix for crash based on Davids suggestion</desc>
            <filename>crashpatch.patch</filename>
            <type>text/plain</type>
            <size>601</size>
            <attacher name="Raju Kunnath">raju.kunnath</attacher>
            
              <data encoding="base64">SW5kZXg6IFRleHRCcmVha0l0ZXJhdG9yUXQuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gVGV4dEJyZWFr
SXRlcmF0b3JRdC5jcHAJKHJldmlzaW9uIDczNTE4KQ0KKysrIFRleHRCcmVha0l0ZXJhdG9yUXQu
Y3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtNjEsNyArNjEsNyBAQA0KICAgICAgICAgaWYgKCFzdHJp
bmcgfHwgIWxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiAwOwogCi0gICAgICAgIGlmIChpdGVy
YXRvci5pc1ZhbGlkKCkgJiYgdHlwZSA9PSBpdGVyYXRvci50eXBlKCkgJiYgbGVuZ3RoID09IGl0
ZXJhdG9yLmxlbmd0aAorICAgICAgICBpZiAoaXRlcmF0b3IuaXNWYWxpZCgpICYmIHR5cGUgPT0g
aXRlcmF0b3IudHlwZSgpICYmIGxlbmd0aCA9PSBpdGVyYXRvci5sZW5ndGggJiYgc3RyaW5nID09
IGl0ZXJhdG9yLnN0cmluZwogICAgICAgICAgICAgJiYgbWVtY21wKHN0cmluZywgaXRlcmF0b3Iu
c3RyaW5nLCBsZW5ndGgpID09IDApIHsKICAgICAgICAgICAgIGl0ZXJhdG9yLnRvU3RhcnQoKTsK
ICAgICAgICAgICAgIHJldHVybiAmaXRlcmF0b3I7Cg==
</data>
<flag name="review"
          id="67275"
          type_id="1"
          status="-"
          setter="tonikitoo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76330</attachid>
            <date>2010-12-12 09:04:36 -0800</date>
            <delta_ts>2010-12-12 09:54:26 -0800</delta_ts>
            <desc>Fix for the crash due to obsolete pointer reference</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>1535</size>
            <attacher name="Raju Kunnath">raju.kunnath</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIENoYW5nZUxvZwkocmV2aXNpb24gNzM1
MTgpDQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpDQpAQCAtMSwzICsxLDE3IEBADQorMjAx
MC0xMi0xMiAgUmFqdSBLdW5uYXRoICA8cmFqdS5rdW5uYXRoQG5va2lhLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIFRleHRCcmVha0l0
ZXJhdG9yIFFUIHBlcmZvcm1hbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zOTk1OAorICAgICAgICAKKyAgICAgICAgVGhlIHByZXZpb3VzIGZpeCBm
b3IgdGhlIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IGhhZCBhIHJlZmVyZW5jZSB0byBhCisgICAg
ICAgIHBvaW50ZXIgd2hpY2ggaXMgZGVsZXRlZCBhbmQgaGVuY2UgdGhlIG1lbWNtcCBjcmFzaGVk
LiBBIGNoZWNrIGlzIGFkZGVkCisgICAgICAgIHRvIHZhbGlkYXRlIHRoZSBzdHJpbmcgaXMgYWxp
dmUgb3Igbm90LgorICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFr
SXRlcmF0b3JRdC5jcHA6CisgICAgICAgIChUZXh0QnJlYWtJdGVyYXRvcjo6c2V0VXBJdGVyYXRv
cik6CisgICAgCiAyMDEwLTEyLTA3ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpJbmRleDogcGxhdGZv
cm0vdGV4dC9xdC9UZXh0QnJlYWtJdGVyYXRvclF0LmNwcA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHBsYXRm
b3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHAJKHJldmlzaW9uIDczNTE4KQ0KKysr
IHBsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHAJKHdvcmtpbmcgY29weSkN
CkBAIC02MCw4ICs2MCw4IEBADQogICAgIHsKICAgICAgICAgaWYgKCFzdHJpbmcgfHwgIWxlbmd0
aCkKICAgICAgICAgICAgIHJldHVybiAwOwotCi0gICAgICAgIGlmIChpdGVyYXRvci5pc1ZhbGlk
KCkgJiYgdHlwZSA9PSBpdGVyYXRvci50eXBlKCkgJiYgbGVuZ3RoID09IGl0ZXJhdG9yLmxlbmd0
aAorICAgICAgICAvL0FkZGVkIHRoZSBzdHJpbmcgcmVmZXJlbmNlIGNoZWNrIHRvIGF2b2lkIHRo
ZSBjcmFzaCBpbiBjYXNlIG9mIGRlbGV0ZWQgcG9pbnRlciAKKyAgICAgICAgaWYgKGl0ZXJhdG9y
LmlzVmFsaWQoKSAmJiB0eXBlID09IGl0ZXJhdG9yLnR5cGUoKSAmJiBsZW5ndGggPT0gaXRlcmF0
b3IubGVuZ3RoICYmIHN0cmluZyA9PSBpdGVyYXRvci5zdHJpbmcKICAgICAgICAgICAgICYmIG1l
bWNtcChzdHJpbmcsIGl0ZXJhdG9yLnN0cmluZywgbGVuZ3RoKSA9PSAwKSB7CiAgICAgICAgICAg
ICBpdGVyYXRvci50b1N0YXJ0KCk7CiAgICAgICAgICAgICByZXR1cm4gJml0ZXJhdG9yOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76331</attachid>
            <date>2010-12-12 09:24:37 -0800</date>
            <delta_ts>2010-12-13 23:09:43 -0800</delta_ts>
            <desc>Fix for crash</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>1495</size>
            <attacher name="Raju Kunnath">raju.kunnath</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDczNTE4KQ0KKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
DQpAQCAtMSwzICsxLDE3IEBADQorMjAxMC0xMi0xMiAgUmFqdSBLdW5uYXRoICA8cmFqdS5rdW5u
YXRoQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbUXRdIFRleHRCcmVha0l0ZXJhdG9yIFFUIHBlcmZvcm1hbmNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTk1OAorICAgICAgICAKKyAg
ICAgICAgVGhlIHByZXZpb3VzIGZpeCBmb3IgdGhlIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IGhh
ZCBhIHJlZmVyZW5jZSB0byBhCisgICAgICAgIHBvaW50ZXIgd2hpY2ggaXMgZGVsZXRlZCBhbmQg
aGVuY2UgdGhlIG1lbWNtcCBjcmFzaGVkLiBBIGNoZWNrIGlzIGFkZGVkCisgICAgICAgIHRvIHZh
bGlkYXRlIHRoZSBzdHJpbmcgaXMgYWxpdmUgb3Igbm90LgorICAgICAgIAorICAgICAgICAqIHBs
YXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHA6CisgICAgICAgIChUZXh0QnJl
YWtJdGVyYXRvcjo6c2V0VXBJdGVyYXRvcik6CisgICAgCiAyMDEwLTEyLTA3ICBJbHlhIFRpa2hv
bm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZl
bCBGZWxkbWFuLgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3F0L1RleHRCcmVha0l0ZXJh
dG9yUXQuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3F0L1RleHRC
cmVha0l0ZXJhdG9yUXQuY3BwCShyZXZpc2lvbiA3MzUxOCkNCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC02MCw4
ICs2MCw4IEBADQogICAgIHsKICAgICAgICAgaWYgKCFzdHJpbmcgfHwgIWxlbmd0aCkKICAgICAg
ICAgICAgIHJldHVybiAwOwotCi0gICAgICAgIGlmIChpdGVyYXRvci5pc1ZhbGlkKCkgJiYgdHlw
ZSA9PSBpdGVyYXRvci50eXBlKCkgJiYgbGVuZ3RoID09IGl0ZXJhdG9yLmxlbmd0aAorIAorICAg
ICAgICBpZiAoaXRlcmF0b3IuaXNWYWxpZCgpICYmIHR5cGUgPT0gaXRlcmF0b3IudHlwZSgpICYm
IGxlbmd0aCA9PSBpdGVyYXRvci5sZW5ndGggJiYgc3RyaW5nID09IGl0ZXJhdG9yLnN0cmluZwog
ICAgICAgICAgICAgJiYgbWVtY21wKHN0cmluZywgaXRlcmF0b3Iuc3RyaW5nLCBsZW5ndGgpID09
IDApIHsKICAgICAgICAgICAgIGl0ZXJhdG9yLnRvU3RhcnQoKTsKICAgICAgICAgICAgIHJldHVy
biAmaXRlcmF0b3I7Cg==
</data>
<flag name="review"
          id="67281"
          type_id="1"
          status="-"
          setter="kling"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76501</attachid>
            <date>2010-12-13 22:31:22 -0800</date>
            <delta_ts>2010-12-13 22:57:42 -0800</delta_ts>
            <desc>Updated the patch based on the review</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>1505</size>
            <attacher name="Raju Kunnath">raju.kunnath</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDczOTk2KQ0KKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
DQpAQCAtMSwzICsxLDE2IEBADQorMjAxMC0xMi0xNCAgUmFqdSBLdW5uYXRoICA8cmFqdS5rdW5u
YXRoQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbUXRdIFRleHRCcmVha0l0ZXJhdG9yIFFUIHBlcmZvcm1hbmNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTk1OAorICAgICAgICAKKyAg
ICAgICAgVGhlIHByZXZpb3VzIGZpeCBmb3IgdGhlIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IGhh
ZCBhIHJlZmVyZW5jZSB0byBhCisgICAgICAgIHBvaW50ZXIgd2hpY2ggaXMgZGVsZXRlZCBhbmQg
aGVuY2UgdGhlIG1lbWNtcCBjcmFzaGVkLiBBIGNoZWNrIGlzIGFkZGVkCisgICAgICAgIHRvIHZh
bGlkYXRlIHRoZSBzdHJpbmcgaXMgYWxpdmUgb3Igbm90LgorICAgICAgIAorICAgICAgICAqIHBs
YXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHA6CisgICAgICAgIChUZXh0QnJl
YWtJdGVyYXRvcjo6c2V0VXBJdGVyYXRvcik6CiAyMDEwLTEyLTEzICBHYXZpbiBQZXRlcnMgIDxn
YXZpbnBAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHANCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JR
dC5jcHAJKHJldmlzaW9uIDczNTE4KQ0KKysrIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9xdC9UZXh0
QnJlYWtJdGVyYXRvclF0LmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTYwLDkgKzYwLDkgQEANCiAg
ICAgewogICAgICAgICBpZiAoIXN0cmluZyB8fCAhbGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICAgICAgaWYgKGl0ZXJhdG9yLmlzVmFsaWQoKSAmJiB0eXBlID09IGl0ZXJhdG9y
LnR5cGUoKSAmJiBsZW5ndGggPT0gaXRlcmF0b3IubGVuZ3RoCi0gICAgICAgICAgICAmJiBtZW1j
bXAoc3RyaW5nLCBpdGVyYXRvci5zdHJpbmcsIGxlbmd0aCkgPT0gMCkgeworIAorICAgICAgICBp
ZiAoaXRlcmF0b3IuaXNWYWxpZCgpICYmIHR5cGUgPT0gaXRlcmF0b3IudHlwZSgpICYmIGxlbmd0
aCA9PSBpdGVyYXRvci5sZW5ndGggJiYgc3RyaW5nID09IGl0ZXJhdG9yLnN0cmluZykKKyAgICAg
ICAgewogICAgICAgICAgICAgaXRlcmF0b3IudG9TdGFydCgpOwogICAgICAgICAgICAgcmV0dXJu
ICZpdGVyYXRvcjsKICAgICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76504</attachid>
            <date>2010-12-13 22:57:42 -0800</date>
            <delta_ts>2010-12-13 23:09:43 -0800</delta_ts>
            <desc>Corrected style check</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>1495</size>
            <attacher name="Raju Kunnath">raju.kunnath</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDczOTk2KQ0KKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
DQpAQCAtMSwzICsxLDE2IEBADQorMjAxMC0xMi0xNCAgUmFqdSBLdW5uYXRoICA8cmFqdS5rdW5u
YXRoQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbUXRdIFRleHRCcmVha0l0ZXJhdG9yIFFUIHBlcmZvcm1hbmNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTk1OAorICAgICAgICAKKyAg
ICAgICAgVGhlIHByZXZpb3VzIGZpeCBmb3IgdGhlIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IGhh
ZCBhIHJlZmVyZW5jZSB0byBhCisgICAgICAgIHBvaW50ZXIgd2hpY2ggaXMgZGVsZXRlZCBhbmQg
aGVuY2UgdGhlIG1lbWNtcCBjcmFzaGVkLiBBIGNoZWNrIGlzIGFkZGVkCisgICAgICAgIHRvIHZh
bGlkYXRlIHRoZSBzdHJpbmcgaXMgYWxpdmUgb3Igbm90LgorICAgICAgIAorICAgICAgICAqIHBs
YXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHA6CisgICAgICAgIChUZXh0QnJl
YWtJdGVyYXRvcjo6c2V0VXBJdGVyYXRvcik6CiAyMDEwLTEyLTEzICBHYXZpbiBQZXRlcnMgIDxn
YXZpbnBAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHANCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JR
dC5jcHAJKHJldmlzaW9uIDczNTE4KQ0KKysrIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9xdC9UZXh0
QnJlYWtJdGVyYXRvclF0LmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTYwLDkgKzYwLDggQEANCiAg
ICAgewogICAgICAgICBpZiAoIXN0cmluZyB8fCAhbGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICAgICAgaWYgKGl0ZXJhdG9yLmlzVmFsaWQoKSAmJiB0eXBlID09IGl0ZXJhdG9y
LnR5cGUoKSAmJiBsZW5ndGggPT0gaXRlcmF0b3IubGVuZ3RoCi0gICAgICAgICAgICAmJiBtZW1j
bXAoc3RyaW5nLCBpdGVyYXRvci5zdHJpbmcsIGxlbmd0aCkgPT0gMCkgeworIAorICAgICAgICBp
ZiAoaXRlcmF0b3IuaXNWYWxpZCgpICYmIHR5cGUgPT0gaXRlcmF0b3IudHlwZSgpICYmIGxlbmd0
aCA9PSBpdGVyYXRvci5sZW5ndGggJiYgc3RyaW5nID09IGl0ZXJhdG9yLnN0cmluZyl7CiAgICAg
ICAgICAgICBpdGVyYXRvci50b1N0YXJ0KCk7CiAgICAgICAgICAgICByZXR1cm4gJml0ZXJhdG9y
OwogICAgICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76505</attachid>
            <date>2010-12-13 23:09:43 -0800</date>
            <delta_ts>2010-12-15 05:28:31 -0800</delta_ts>
            <desc>Corrected again the style issue</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>1496</size>
            <attacher name="Raju Kunnath">raju.kunnath</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDczOTk2KQ0KKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
DQpAQCAtMSwzICsxLDE2IEBADQorMjAxMC0xMi0xNCAgUmFqdSBLdW5uYXRoICA8cmFqdS5rdW5u
YXRoQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbUXRdIFRleHRCcmVha0l0ZXJhdG9yIFFUIHBlcmZvcm1hbmNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTk1OAorICAgICAgICAKKyAg
ICAgICAgVGhlIHByZXZpb3VzIGZpeCBmb3IgdGhlIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IGhh
ZCBhIHJlZmVyZW5jZSB0byBhCisgICAgICAgIHBvaW50ZXIgd2hpY2ggaXMgZGVsZXRlZCBhbmQg
aGVuY2UgdGhlIG1lbWNtcCBjcmFzaGVkLiBBIGNoZWNrIGlzIGFkZGVkCisgICAgICAgIHRvIHZh
bGlkYXRlIHRoZSBzdHJpbmcgaXMgYWxpdmUgb3Igbm90LgorICAgICAgIAorICAgICAgICAqIHBs
YXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHA6CisgICAgICAgIChUZXh0QnJl
YWtJdGVyYXRvcjo6c2V0VXBJdGVyYXRvcik6CiAyMDEwLTEyLTEzICBHYXZpbiBQZXRlcnMgIDxn
YXZpbnBAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHANCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JR
dC5jcHAJKHJldmlzaW9uIDczNTE4KQ0KKysrIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9xdC9UZXh0
QnJlYWtJdGVyYXRvclF0LmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTYwLDkgKzYwLDggQEANCiAg
ICAgewogICAgICAgICBpZiAoIXN0cmluZyB8fCAhbGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICAgICAgaWYgKGl0ZXJhdG9yLmlzVmFsaWQoKSAmJiB0eXBlID09IGl0ZXJhdG9y
LnR5cGUoKSAmJiBsZW5ndGggPT0gaXRlcmF0b3IubGVuZ3RoCi0gICAgICAgICAgICAmJiBtZW1j
bXAoc3RyaW5nLCBpdGVyYXRvci5zdHJpbmcsIGxlbmd0aCkgPT0gMCkgeworIAorICAgICAgICBp
ZiAoaXRlcmF0b3IuaXNWYWxpZCgpICYmIHR5cGUgPT0gaXRlcmF0b3IudHlwZSgpICYmIGxlbmd0
aCA9PSBpdGVyYXRvci5sZW5ndGggJiYgc3RyaW5nID09IGl0ZXJhdG9yLnN0cmluZykgewogICAg
ICAgICAgICAgaXRlcmF0b3IudG9TdGFydCgpOwogICAgICAgICAgICAgcmV0dXJuICZpdGVyYXRv
cjsKICAgICAgICAgfQo=
</data>
<flag name="review"
          id="67457"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76511</attachid>
            <date>2010-12-14 01:09:08 -0800</date>
            <delta_ts>2010-12-15 05:28:31 -0800</delta_ts>
            <desc>uploaded the patch again</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>1829</size>
            <attacher name="Raju Kunnath">raju.kunnath</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDczOTk2KQ0KKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
DQpAQCAtMSwzICsxLDIxIEBADQorMjAxMC0xMi0xNCAgUmFqdSBLdW5uYXRoICA8cmFqdS5rdW5u
YXRoQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbUXRdIFRleHRCcmVha0l0ZXJhdG9yIFFUIHBlcmZvcm1hbmNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTk1OAorICAgICAgICAKKyAg
ICAgICAgVGhlIHByZXZpb3VzIGZpeCBmb3IgdGhlIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IGhh
ZCBhIHJlZmVyZW5jZSB0byBhCisgICAgICAgIHBvaW50ZXIgd2hpY2ggaXMgZGVsZXRlZCBhbmQg
aGVuY2UgdGhlIG1lbWNtcCBjcmFzaGVkLiBBIGNoZWNrIGlzIGFkZGVkCisgICAgICAgIHRvIHZh
bGlkYXRlIHRoZSBzdHJpbmcgaXMgYWxpdmUgb3Igbm90LgorICAgICAgICAKKyAgICAgICAgVGhp
cyBjaGFuZ2Ugd2lsbCBmaXggdGhlIGNyYXNoIHdoaWxlIG9uIHBhbm5pbmcgYW5kIHNjcm9sbGlu
ZyBvZiBhIHBhZ2UgaGFzIG1hbnkgZGl2IHRhZ2VzLgorICAgICAgICBNYW55IHRlc3RpbmcgYXJl
IGRvbmUgdy5yLnQgcGFubmluZyBhbmQgc2Nyb2xsaW5nIG9uIG1vYmlsZSBwaG9uZSBhbmQgZW11
bGF0b3IuIEFsc28gdGhpcworICAgICAgICBpcyBhIHNwb3JhZGljIGNyYXNoIGhlbmNlIHBlcmZv
cm1lZCBtYW51YWwgcmVncmVzc2lvbiB0ZXN0cyB0byBjaGVjayB3aGV0aGVyIHRoZSBjcmFzaCBp
cyAKKyAgICAgICAgcmVwcm9kdWNpYmxlLgorICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL3Rl
eHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHA6CisgICAgICAgIChUZXh0QnJlYWtJdGVyYXRv
cjo6c2V0VXBJdGVyYXRvcik6CiAyMDEwLTEyLTEzICBHYXZpbiBQZXRlcnMgIDxnYXZpbnBAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHANCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHAJKHJl
dmlzaW9uIDczNTE4KQ0KKysrIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9xdC9UZXh0QnJlYWtJdGVy
YXRvclF0LmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTYwLDkgKzYwLDggQEANCiAgICAgewogICAg
ICAgICBpZiAoIXN0cmluZyB8fCAhbGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0KLSAg
ICAgICAgaWYgKGl0ZXJhdG9yLmlzVmFsaWQoKSAmJiB0eXBlID09IGl0ZXJhdG9yLnR5cGUoKSAm
JiBsZW5ndGggPT0gaXRlcmF0b3IubGVuZ3RoCi0gICAgICAgICAgICAmJiBtZW1jbXAoc3RyaW5n
LCBpdGVyYXRvci5zdHJpbmcsIGxlbmd0aCkgPT0gMCkgeworIAorICAgICAgICBpZiAoaXRlcmF0
b3IuaXNWYWxpZCgpICYmIHR5cGUgPT0gaXRlcmF0b3IudHlwZSgpICYmIGxlbmd0aCA9PSBpdGVy
YXRvci5sZW5ndGggJiYgc3RyaW5nID09IGl0ZXJhdG9yLnN0cmluZykgewogICAgICAgICAgICAg
aXRlcmF0b3IudG9TdGFydCgpOwogICAgICAgICAgICAgcmV0dXJuICZpdGVyYXRvcjsKICAgICAg
ICAgfQo=
</data>
<flag name="review"
          id="67464"
          type_id="1"
          status="-"
          setter="kling"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76639</attachid>
            <date>2010-12-15 05:28:31 -0800</date>
            <delta_ts>2010-12-15 05:36:20 -0800</delta_ts>
            <desc>Fixe based on the comments</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>2972</size>
            <attacher name="Raju Kunnath">raju.kunnath</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDc0MTAxKQ0KKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
DQpAQCAtMSwzICsxLDIxIEBADQorMjAxMC0xMi0xNSAgUmFqdSBLdW5uYXRoICA8cmFqdS5rdW5u
YXRoQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbUXRdIFRleHRCcmVha0l0ZXJhdG9yIFFUIHBlcmZvcm1hbmNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTk1OAorICAgICAgICAKKyAg
ICAgICAgVGhlIHByZXZpb3VzIGZpeCBmb3IgdGhlIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IGhh
ZCBhIHJlZmVyZW5jZSB0byBhCisgICAgICAgIHBvaW50ZXIgd2hpY2ggaXMgZGVsZXRlZCBhbmQg
aGVuY2UgdGhlIG1lbWNtcCBjcmFzaGVkLiBBIGNoZWNrIGlzIGFkZGVkCisgICAgICAgIHRvIHZh
bGlkYXRlIHRoZSBzdHJpbmcgaXMgYWxpdmUgb3Igbm90LiBUaGUgcm9vdCBjYXVzZSBvZiB0aGlz
IGlzc3VlIGlzCisgICAgICAgIHRoYXQgaW4gU3ltYmlhbiB0aGUgRmFzdGFsbG9jYXRvciBjbGFp
bSB0aGUgbWVtb3J5IGZhc3QgYW5kIGhlbmNlIHRoZSBjcmFzaC4KKyAgICAgICAgQWxzbyB0aGlz
IGlzIGEgc3BvcmFkaWMgY3Jhc2guCisgICAgICAgIAorICAgICAgICBUZXN0ZWQgdGhlIHBhdGNo
IG9uIFF0VGVzdEJyb3dzZXIgb24gUzYwIGRldmljZXMgYW5kIHdpbmRvd3MuCisgICAgICAgCisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9xdC9UZXh0QnJlYWtJdGVyYXRvclF0LmNwcDoKKyAgICAg
ICAgKFRleHRCcmVha0l0ZXJhdG9yOjpzZXRVcEl0ZXJhdG9yKToKKwogMjAxMC0xMi0xNSAgRW1p
bCBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0g
QmFydGguCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JR
dC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFr
SXRlcmF0b3JRdC5jcHAJKHJldmlzaW9uIDc0MTAwKQ0KKysrIFdlYkNvcmUvcGxhdGZvcm0vdGV4
dC9xdC9UZXh0QnJlYWtJdGVyYXRvclF0LmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTIxLDYgKzIx
LDcgQEANCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3Iu
aCIKIAorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2luY2x1ZGUgPFF0Q29yZS9x
dGV4dGJvdW5kYXJ5ZmluZGVyLmg+CiAjaW5jbHVkZSA8cWRlYnVnLmg+CiAKQEAgLTM5LDM1ICs0
MCwzMCBAQA0KICAgICByZXR1cm4gUUxvY2FsZTo6c3lzdGVtKCkubmFtZSgpLnRvTGF0aW4xKCk7
CiB9CiAjZWxzZQotICAgIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGJ1ZmZlclsxMDI0XTsKLQorIAog
ICAgIGNsYXNzIFRleHRCcmVha0l0ZXJhdG9yIDogcHVibGljIFFUZXh0Qm91bmRhcnlGaW5kZXIg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgVGV4dEJyZWFrSXRlcmF0b3IoUVRleHRCb3VuZGFyeUZp
bmRlcjo6Qm91bmRhcnlUeXBlIHR5cGUsIGNvbnN0IFVDaGFyKiBzdHJpbmcsIGludCBsZW5ndGgp
Ci0gICAgICAgICAgICA6IFFUZXh0Qm91bmRhcnlGaW5kZXIodHlwZSwgKGNvbnN0IFFDaGFyKilz
dHJpbmcsIGxlbmd0aCwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkKLSAgICAgICAgICAgICwgbGVu
Z3RoKGxlbmd0aCkKKyAgICAgICAgVGV4dEJyZWFrSXRlcmF0b3IoUVRleHRCb3VuZGFyeUZpbmRl
cjo6Qm91bmRhcnlUeXBlIHR5cGUsIFN0cmluZyBzdHJpbmcpCisgICAgICAgICAgICA6IFFUZXh0
Qm91bmRhcnlGaW5kZXIodHlwZSwgc3RyaW5nKQogICAgICAgICAgICAgLCBzdHJpbmcoc3RyaW5n
KSB7fQogICAgICAgICBUZXh0QnJlYWtJdGVyYXRvcigpCiAgICAgICAgICAgICA6IFFUZXh0Qm91
bmRhcnlGaW5kZXIoKQotICAgICAgICAgICAgLCBsZW5ndGgoMCkKLSAgICAgICAgICAgICwgc3Ry
aW5nKDApIHt9Ci0KLSAgICAgICAgaW50IGxlbmd0aDsKLSAgICAgICAgY29uc3QgVUNoYXIqIHN0
cmluZzsKKyAgICAgICAgICAgICwgc3RyaW5nKCIiKSB7fSAKKyAgICAgICAgU3RyaW5nIHN0cmlu
ZzsKICAgICB9OwogCiAgICAgVGV4dEJyZWFrSXRlcmF0b3IqIHNldFVwSXRlcmF0b3IoVGV4dEJy
ZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBRVGV4dEJvdW5kYXJ5RmluZGVyOjpCb3VuZGFyeVR5cGUg
dHlwZSwgY29uc3QgVUNoYXIqIHN0cmluZywgaW50IGxlbmd0aCkKICAgICB7CiAgICAgICAgIGlm
ICghc3RyaW5nIHx8ICFsZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gMDsKLQotICAgICAgICBp
ZiAoaXRlcmF0b3IuaXNWYWxpZCgpICYmIHR5cGUgPT0gaXRlcmF0b3IudHlwZSgpICYmIGxlbmd0
aCA9PSBpdGVyYXRvci5sZW5ndGgKLSAgICAgICAgICAgICYmIG1lbWNtcChzdHJpbmcsIGl0ZXJh
dG9yLnN0cmluZywgbGVuZ3RoKSA9PSAwKSB7CisJCQkKKyAgICAgICAgU3RyaW5nIGxvY2FsU3Ry
aW5nID0gc3RyaW5nOworICAgICAgICBpZiAoaXRlcmF0b3Iuc3RyaW5nID09IGxvY2FsU3RyaW5n
KSB7CiAgICAgICAgICAgICBpdGVyYXRvci50b1N0YXJ0KCk7CiAgICAgICAgICAgICByZXR1cm4g
Jml0ZXJhdG9yOwogICAgICAgICB9CiAKLSAgICAgICAgaXRlcmF0b3IgPSBUZXh0QnJlYWtJdGVy
YXRvcih0eXBlLCBzdHJpbmcsIGxlbmd0aCk7CisgICAgICAgIGl0ZXJhdG9yID0gVGV4dEJyZWFr
SXRlcmF0b3IodHlwZSwgbG9jYWxTdHJpbmcpOwogCiAgICAgICAgIHJldHVybiAmaXRlcmF0b3I7
CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76640</attachid>
            <date>2010-12-15 05:36:20 -0800</date>
            <delta_ts>2010-12-15 08:44:28 -0800</delta_ts>
            <desc>Fix as per the commnet</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>2981</size>
            <attacher name="Raju Kunnath">raju.kunnath</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDc0MTAxKQ0KKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
DQpAQCAtMSwzICsxLDIxIEBADQorMjAxMC0xMi0xNSAgUmFqdSBLdW5uYXRoICA8cmFqdS5rdW5u
YXRoQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbUXRdIFRleHRCcmVha0l0ZXJhdG9yIFFUIHBlcmZvcm1hbmNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTk1OAorICAgICAgICAKKyAg
ICAgICAgVGhlIHByZXZpb3VzIGZpeCBmb3IgdGhlIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IGhh
ZCBhIHJlZmVyZW5jZSB0byBhCisgICAgICAgIHBvaW50ZXIgd2hpY2ggaXMgZGVsZXRlZCBhbmQg
aGVuY2UgdGhlIG1lbWNtcCBjcmFzaGVkLiBBIGNoZWNrIGlzIGFkZGVkCisgICAgICAgIHRvIHZh
bGlkYXRlIHRoZSBzdHJpbmcgaXMgYWxpdmUgb3Igbm90LiBUaGUgcm9vdCBjYXVzZSBvZiB0aGlz
IGlzc3VlIGlzCisgICAgICAgIHRoYXQgaW4gU3ltYmlhbiB0aGUgRmFzdGFsbG9jYXRvciBjbGFp
bSB0aGUgbWVtb3J5IGZhc3QgYW5kIGhlbmNlIHRoZSBjcmFzaC4KKyAgICAgICAgQWxzbyB0aGlz
IGlzIGEgc3BvcmFkaWMgY3Jhc2guCisgICAgICAgIAorICAgICAgICBUZXN0ZWQgdGhlIHBhdGNo
IG9uIFF0VGVzdEJyb3dzZXIgb24gUzYwIGRldmljZXMgYW5kIHdpbmRvd3MuCisgICAgICAgCisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9xdC9UZXh0QnJlYWtJdGVyYXRvclF0LmNwcDoKKyAgICAg
ICAgKFRleHRCcmVha0l0ZXJhdG9yOjpzZXRVcEl0ZXJhdG9yKToKKwogMjAxMC0xMi0xNSAgRW1p
bCBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0g
QmFydGguCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JR
dC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFr
SXRlcmF0b3JRdC5jcHAJKHJldmlzaW9uIDc0MTAwKQ0KKysrIFdlYkNvcmUvcGxhdGZvcm0vdGV4
dC9xdC9UZXh0QnJlYWtJdGVyYXRvclF0LmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTIxLDYgKzIx
LDcgQEANCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3Iu
aCIKIAorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2luY2x1ZGUgPFF0Q29yZS9x
dGV4dGJvdW5kYXJ5ZmluZGVyLmg+CiAjaW5jbHVkZSA8cWRlYnVnLmg+CiAKQEAgLTM5LDIxICs0
MCwxNiBAQA0KICAgICByZXR1cm4gUUxvY2FsZTo6c3lzdGVtKCkubmFtZSgpLnRvTGF0aW4xKCk7
CiB9CiAjZWxzZQotICAgIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGJ1ZmZlclsxMDI0XTsKLQorIAog
ICAgIGNsYXNzIFRleHRCcmVha0l0ZXJhdG9yIDogcHVibGljIFFUZXh0Qm91bmRhcnlGaW5kZXIg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgVGV4dEJyZWFrSXRlcmF0b3IoUVRleHRCb3VuZGFyeUZp
bmRlcjo6Qm91bmRhcnlUeXBlIHR5cGUsIGNvbnN0IFVDaGFyKiBzdHJpbmcsIGludCBsZW5ndGgp
Ci0gICAgICAgICAgICA6IFFUZXh0Qm91bmRhcnlGaW5kZXIodHlwZSwgKGNvbnN0IFFDaGFyKilz
dHJpbmcsIGxlbmd0aCwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkKLSAgICAgICAgICAgICwgbGVu
Z3RoKGxlbmd0aCkKKyAgICAgICAgVGV4dEJyZWFrSXRlcmF0b3IoUVRleHRCb3VuZGFyeUZpbmRl
cjo6Qm91bmRhcnlUeXBlIHR5cGUsIFN0cmluZyBzdHJpbmcpCisgICAgICAgICAgICA6IFFUZXh0
Qm91bmRhcnlGaW5kZXIodHlwZSwgc3RyaW5nKQogICAgICAgICAgICAgLCBzdHJpbmcoc3RyaW5n
KSB7fQogICAgICAgICBUZXh0QnJlYWtJdGVyYXRvcigpCiAgICAgICAgICAgICA6IFFUZXh0Qm91
bmRhcnlGaW5kZXIoKQotICAgICAgICAgICAgLCBsZW5ndGgoMCkKLSAgICAgICAgICAgICwgc3Ry
aW5nKDApIHt9Ci0KLSAgICAgICAgaW50IGxlbmd0aDsKLSAgICAgICAgY29uc3QgVUNoYXIqIHN0
cmluZzsKKyAgICAgICAgICAgICwgc3RyaW5nKCIiKSB7fSAKKyAgICAgICAgU3RyaW5nIHN0cmlu
ZzsKICAgICB9OwogCiAgICAgVGV4dEJyZWFrSXRlcmF0b3IqIHNldFVwSXRlcmF0b3IoVGV4dEJy
ZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBRVGV4dEJvdW5kYXJ5RmluZGVyOjpCb3VuZGFyeVR5cGUg
dHlwZSwgY29uc3QgVUNoYXIqIHN0cmluZywgaW50IGxlbmd0aCkKQEAgLTYxLDEzICs1NywxMyBA
QA0KICAgICAgICAgaWYgKCFzdHJpbmcgfHwgIWxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiAw
OwogCi0gICAgICAgIGlmIChpdGVyYXRvci5pc1ZhbGlkKCkgJiYgdHlwZSA9PSBpdGVyYXRvci50
eXBlKCkgJiYgbGVuZ3RoID09IGl0ZXJhdG9yLmxlbmd0aAotICAgICAgICAgICAgJiYgbWVtY21w
KHN0cmluZywgaXRlcmF0b3Iuc3RyaW5nLCBsZW5ndGgpID09IDApIHsKKyAgICAgICAgU3RyaW5n
IGxvY2FsU3RyaW5nID0gc3RyaW5nOworICAgICAgICBpZiAoaXRlcmF0b3Iuc3RyaW5nID09IGxv
Y2FsU3RyaW5nKSB7CiAgICAgICAgICAgICBpdGVyYXRvci50b1N0YXJ0KCk7CiAgICAgICAgICAg
ICByZXR1cm4gJml0ZXJhdG9yOwogICAgICAgICB9CiAKLSAgICAgICAgaXRlcmF0b3IgPSBUZXh0
QnJlYWtJdGVyYXRvcih0eXBlLCBzdHJpbmcsIGxlbmd0aCk7CisgICAgICAgIGl0ZXJhdG9yID0g
VGV4dEJyZWFrSXRlcmF0b3IodHlwZSwgbG9jYWxTdHJpbmcpOwogCiAgICAgICAgIHJldHVybiAm
aXRlcmF0b3I7CiAgICAgfQo=
</data>
<flag name="review"
          id="67624"
          type_id="1"
          status="-"
          setter="kling"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76661</attachid>
            <date>2010-12-15 10:10:17 -0800</date>
            <delta_ts>2010-12-15 10:24:56 -0800</delta_ts>
            <desc>Review comments incorporated</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>2816</size>
            <attacher name="Raju Kunnath">raju.kunnath</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIENoYW5nZUxvZwkocmV2aXNpb24gNzQx
MDEpDQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpDQpAQCAtMSwzICsxLDE5IEBADQorMjAx
MC0xMi0xNSAgUmFqdSBLdW5uYXRoICA8cmFqdS5rdW5uYXRoQG5va2lhLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIFRleHRCcmVha0l0
ZXJhdG9yIFFUIHBlcmZvcm1hbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zOTk1OAorICAgICAgICAKKyAgICAgICAgVGhlIHByZXZpb3VzIGZpeCBm
b3IgdGhlIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IGhhZCBhIHJlZmVyZW5jZSB0byBhCisgICAg
ICAgIHBvaW50ZXIgd2hpY2ggaXMgZGVsZXRlZCBhbmQgaGVuY2UgdGhlIG1lbWNtcCBjcmFzaGVk
LiBUaGUgcm9vdCBjYXVzZSBvZiB0aGlzIGlzc3VlIGlzCisgICAgICAgIHRoYXQgaW4gU3ltYmlh
biB0aGUgRmFzdGFsbG9jYXRvciBjbGFpbSB0aGUgbWVtb3J5IGZhc3QgYW5kIGhlbmNlIHRoZSBj
cmFzaC4KKyAgICAgICAgQWxzbyB0aGlzIGlzIGEgc3BvcmFkaWMgY3Jhc2guCisgICAgICAgIAor
ICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L3F0L1RleHRCcmVha0l0ZXJhdG9yUXQu
Y3BwOgorICAgICAgICAoVGV4dEJyZWFrSXRlcmF0b3I6OnNldFVwSXRlcmF0b3IpOgorCiAyMDEw
LTEyLTE1ICBFbWlsIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IHBsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0
b3JRdC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBwbGF0Zm9ybS90ZXh0L3F0L1RleHRCcmVha0l0ZXJh
dG9yUXQuY3BwCShyZXZpc2lvbiA3NDEwMCkNCisrKyBwbGF0Zm9ybS90ZXh0L3F0L1RleHRCcmVh
a0l0ZXJhdG9yUXQuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMjEsNiArMjEsNyBAQA0KICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgogCisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaW5jbHVkZSA8UXRDb3JlL3F0ZXh0Ym91bmRhcnlm
aW5kZXIuaD4KICNpbmNsdWRlIDxxZGVidWcuaD4KIApAQCAtMzksMzUgKzQwLDMxIEBADQogICAg
IHJldHVybiBRTG9jYWxlOjpzeXN0ZW0oKS5uYW1lKCkudG9MYXRpbjEoKTsKIH0KICNlbHNlCi0g
ICAgc3RhdGljIHVuc2lnbmVkIGNoYXIgYnVmZmVyWzEwMjRdOwotCisgCiAgICAgY2xhc3MgVGV4
dEJyZWFrSXRlcmF0b3IgOiBwdWJsaWMgUVRleHRCb3VuZGFyeUZpbmRlciB7CiAgICAgcHVibGlj
OgotICAgICAgICBUZXh0QnJlYWtJdGVyYXRvcihRVGV4dEJvdW5kYXJ5RmluZGVyOjpCb3VuZGFy
eVR5cGUgdHlwZSwgY29uc3QgVUNoYXIqIHN0cmluZywgaW50IGxlbmd0aCkKLSAgICAgICAgICAg
IDogUVRleHRCb3VuZGFyeUZpbmRlcih0eXBlLCAoY29uc3QgUUNoYXIqKXN0cmluZywgbGVuZ3Ro
LCBidWZmZXIsIHNpemVvZihidWZmZXIpKQotICAgICAgICAgICAgLCBsZW5ndGgobGVuZ3RoKQor
ICAgICAgICBUZXh0QnJlYWtJdGVyYXRvcihRVGV4dEJvdW5kYXJ5RmluZGVyOjpCb3VuZGFyeVR5
cGUgdHlwZSwgU3RyaW5nIHN0cmluZywgaW50IGxlbmd0aCkKKyAgICAgICAgICAgIDogUVRleHRC
b3VuZGFyeUZpbmRlcih0eXBlLCBzdHJpbmcpCiAgICAgICAgICAgICAsIHN0cmluZyhzdHJpbmcp
IHt9CiAgICAgICAgIFRleHRCcmVha0l0ZXJhdG9yKCkKICAgICAgICAgICAgIDogUVRleHRCb3Vu
ZGFyeUZpbmRlcigpCi0gICAgICAgICAgICAsIGxlbmd0aCgwKQotICAgICAgICAgICAgLCBzdHJp
bmcoMCkge30KLQotICAgICAgICBpbnQgbGVuZ3RoOwotICAgICAgICBjb25zdCBVQ2hhciogc3Ry
aW5nOworICAgICAgICAgICAgLCBzdHJpbmcoKSB7fSAKKyAgICAgICAgU3RyaW5nIHN0cmluZzsK
ICAgICB9OwogCiAgICAgVGV4dEJyZWFrSXRlcmF0b3IqIHNldFVwSXRlcmF0b3IoVGV4dEJyZWFr
SXRlcmF0b3ImIGl0ZXJhdG9yLCBRVGV4dEJvdW5kYXJ5RmluZGVyOjpCb3VuZGFyeVR5cGUgdHlw
ZSwgY29uc3QgVUNoYXIqIHN0cmluZywgaW50IGxlbmd0aCkKICAgICB7CisgICAgICAgCiAgICAg
ICAgIGlmICghc3RyaW5nIHx8ICFsZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAotICAg
ICAgICBpZiAoaXRlcmF0b3IuaXNWYWxpZCgpICYmIHR5cGUgPT0gaXRlcmF0b3IudHlwZSgpICYm
IGxlbmd0aCA9PSBpdGVyYXRvci5sZW5ndGgKLSAgICAgICAgICAgICYmIG1lbWNtcChzdHJpbmcs
IGl0ZXJhdG9yLnN0cmluZywgbGVuZ3RoKSA9PSAwKSB7CisgICAgICAgIFN0cmluZyBsb2NhbFN0
cmluZyhzdHJpbmcsbGVuZ3RoKTsKKyAgICAgICAgaWYgKGl0ZXJhdG9yLnN0cmluZyA9PSBsb2Nh
bFN0cmluZykgewogICAgICAgICAgICAgaXRlcmF0b3IudG9TdGFydCgpOwogICAgICAgICAgICAg
cmV0dXJuICZpdGVyYXRvcjsKICAgICAgICAgfQogCi0gICAgICAgIGl0ZXJhdG9yID0gVGV4dEJy
ZWFrSXRlcmF0b3IodHlwZSwgc3RyaW5nLCBsZW5ndGgpOworICAgICAgICBpdGVyYXRvciA9IFRl
eHRCcmVha0l0ZXJhdG9yKHR5cGUsIGxvY2FsU3RyaW5nLGxlbmd0aCApOwogCiAgICAgICAgIHJl
dHVybiAmaXRlcmF0b3I7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76663</attachid>
            <date>2010-12-15 10:24:56 -0800</date>
            <delta_ts>2010-12-15 10:30:38 -0800</delta_ts>
            <desc>uploading with review comments</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>2828</size>
            <attacher name="Raju Kunnath">raju.kunnath</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDc0MTAxKQ0KKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
DQpAQCAtMSwzICsxLDE4IEBADQorMjAxMC0xMi0xNSAgUmFqdSBLdW5uYXRoICA8cmFqdS5rdW5u
YXRoQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbUXRdIFRleHRCcmVha0l0ZXJhdG9yIFFUIHBlcmZvcm1hbmNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTk1OAorCisgICAgICAgIFRo
ZSBwcmV2aW91cyBmaXggZm9yIHRoZSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCBoYWQgYSByZWZl
cmVuY2UgdG8gYQorICAgICAgICBwb2ludGVyIHdoaWNoIGlzIGRlbGV0ZWQgYW5kIGhlbmNlIHRo
ZSBtZW1jbXAgY3Jhc2hlZC4gVGhlIHJvb3QgY2F1c2Ugb2YgdGhpcyBpc3N1ZSBpcworICAgICAg
ICB0aGF0IGluIFN5bWJpYW4gdGhlIEZhc3RhbGxvY2F0b3IgY2xhaW0gdGhlIG1lbW9yeSBmYXN0
IGFuZCBoZW5jZSB0aGUgY3Jhc2guCisgICAgICAgIEFsc28gdGhpcyBpcyBhIHNwb3JhZGljIGNy
YXNoLgorCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9xdC9UZXh0QnJlYWtJdGVyYXRvclF0LmNw
cDoKKyAgICAgICAgKFRleHRCcmVha0l0ZXJhdG9yOjpzZXRVcEl0ZXJhdG9yKToKKwogMjAxMC0x
Mi0xNSAgRW1pbCBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFr
SXRlcmF0b3JRdC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvcXQv
VGV4dEJyZWFrSXRlcmF0b3JRdC5jcHAJKHJldmlzaW9uIDc0MTAwKQ0KKysrIFdlYkNvcmUvcGxh
dGZvcm0vdGV4dC9xdC9UZXh0QnJlYWtJdGVyYXRvclF0LmNwcAkod29ya2luZyBjb3B5KQ0KQEAg
LTIxLDYgKzIxLDcgQEANCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGV4dEJyZWFr
SXRlcmF0b3IuaCIKIAorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2luY2x1ZGUg
PFF0Q29yZS9xdGV4dGJvdW5kYXJ5ZmluZGVyLmg+CiAjaW5jbHVkZSA8cWRlYnVnLmg+CiAKQEAg
LTM5LDM1ICs0MCwzMSBAQA0KICAgICByZXR1cm4gUUxvY2FsZTo6c3lzdGVtKCkubmFtZSgpLnRv
TGF0aW4xKCk7CiB9CiAjZWxzZQotICAgIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGJ1ZmZlclsxMDI0
XTsKIAogICAgIGNsYXNzIFRleHRCcmVha0l0ZXJhdG9yIDogcHVibGljIFFUZXh0Qm91bmRhcnlG
aW5kZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgVGV4dEJyZWFrSXRlcmF0b3IoUVRleHRCb3Vu
ZGFyeUZpbmRlcjo6Qm91bmRhcnlUeXBlIHR5cGUsIGNvbnN0IFVDaGFyKiBzdHJpbmcsIGludCBs
ZW5ndGgpCi0gICAgICAgICAgICA6IFFUZXh0Qm91bmRhcnlGaW5kZXIodHlwZSwgKGNvbnN0IFFD
aGFyKilzdHJpbmcsIGxlbmd0aCwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkKLSAgICAgICAgICAg
ICwgbGVuZ3RoKGxlbmd0aCkKKyAgICAgICAgVGV4dEJyZWFrSXRlcmF0b3IoUVRleHRCb3VuZGFy
eUZpbmRlcjo6Qm91bmRhcnlUeXBlIHR5cGUsIFN0cmluZyBzdHJpbmcsIGludCBsZW5ndGgpCisg
ICAgICAgICAgICA6IFFUZXh0Qm91bmRhcnlGaW5kZXIodHlwZSwgc3RyaW5nKQogICAgICAgICAg
ICAgLCBzdHJpbmcoc3RyaW5nKSB7fQogICAgICAgICBUZXh0QnJlYWtJdGVyYXRvcigpCiAgICAg
ICAgICAgICA6IFFUZXh0Qm91bmRhcnlGaW5kZXIoKQotICAgICAgICAgICAgLCBsZW5ndGgoMCkK
LSAgICAgICAgICAgICwgc3RyaW5nKDApIHt9Ci0KLSAgICAgICAgaW50IGxlbmd0aDsKLSAgICAg
ICAgY29uc3QgVUNoYXIqIHN0cmluZzsKKyAgICAgICAgICAgICwgc3RyaW5nKCkge30gCisgICAg
ICAgIFN0cmluZyBzdHJpbmc7CiAgICAgfTsKIAogICAgIFRleHRCcmVha0l0ZXJhdG9yKiBzZXRV
cEl0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yJiBpdGVyYXRvciwgUVRleHRCb3VuZGFyeUZpbmRl
cjo6Qm91bmRhcnlUeXBlIHR5cGUsIGNvbnN0IFVDaGFyKiBzdHJpbmcsIGludCBsZW5ndGgpCiAg
ICAgeworCiAgICAgICAgIGlmICghc3RyaW5nIHx8ICFsZW5ndGgpCiAgICAgICAgICAgICByZXR1
cm4gMDsKIAotICAgICAgICBpZiAoaXRlcmF0b3IuaXNWYWxpZCgpICYmIHR5cGUgPT0gaXRlcmF0
b3IudHlwZSgpICYmIGxlbmd0aCA9PSBpdGVyYXRvci5sZW5ndGgKLSAgICAgICAgICAgICYmIG1l
bWNtcChzdHJpbmcsIGl0ZXJhdG9yLnN0cmluZywgbGVuZ3RoKSA9PSAwKSB7CisgICAgICAgIFN0
cmluZyBsb2NhbFN0cmluZyhzdHJpbmcsbGVuZ3RoKTsKKyAgICAgICAgaWYgKGl0ZXJhdG9yLnN0
cmluZyA9PSBsb2NhbFN0cmluZykgewogICAgICAgICAgICAgaXRlcmF0b3IudG9TdGFydCgpOwog
ICAgICAgICAgICAgcmV0dXJuICZpdGVyYXRvcjsKICAgICAgICAgfQogCi0gICAgICAgIGl0ZXJh
dG9yID0gVGV4dEJyZWFrSXRlcmF0b3IodHlwZSwgc3RyaW5nLCBsZW5ndGgpOworICAgICAgICBp
dGVyYXRvciA9IFRleHRCcmVha0l0ZXJhdG9yKHR5cGUsIGxvY2FsU3RyaW5nLGxlbmd0aCApOwog
CiAgICAgICAgIHJldHVybiAmaXRlcmF0b3I7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76664</attachid>
            <date>2010-12-15 10:30:38 -0800</date>
            <delta_ts>2010-12-15 17:42:33 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>2829</size>
            <attacher name="Raju Kunnath">raju.kunnath</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDc0MTAxKQ0KKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
DQpAQCAtMSwzICsxLDE4IEBADQorMjAxMC0xMi0xNSAgUmFqdSBLdW5uYXRoICA8cmFqdS5rdW5u
YXRoQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbUXRdIFRleHRCcmVha0l0ZXJhdG9yIFFUIHBlcmZvcm1hbmNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTk1OAorCisgICAgICAgIFRo
ZSBwcmV2aW91cyBmaXggZm9yIHRoZSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCBoYWQgYSByZWZl
cmVuY2UgdG8gYQorICAgICAgICBwb2ludGVyIHdoaWNoIGlzIGRlbGV0ZWQgYW5kIGhlbmNlIHRo
ZSBtZW1jbXAgY3Jhc2hlZC4gVGhlIHJvb3QgY2F1c2Ugb2YgdGhpcyBpc3N1ZSBpcworICAgICAg
ICB0aGF0IGluIFN5bWJpYW4gdGhlIEZhc3RhbGxvY2F0b3IgY2xhaW0gdGhlIG1lbW9yeSBmYXN0
IGFuZCBoZW5jZSB0aGUgY3Jhc2guCisgICAgICAgIEFsc28gdGhpcyBpcyBhIHNwb3JhZGljIGNy
YXNoLgorCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9xdC9UZXh0QnJlYWtJdGVyYXRvclF0LmNw
cDoKKyAgICAgICAgKFRleHRCcmVha0l0ZXJhdG9yOjpzZXRVcEl0ZXJhdG9yKToKKwogMjAxMC0x
Mi0xNSAgRW1pbCBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFr
SXRlcmF0b3JRdC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvcXQv
VGV4dEJyZWFrSXRlcmF0b3JRdC5jcHAJKHJldmlzaW9uIDc0MTAwKQ0KKysrIFdlYkNvcmUvcGxh
dGZvcm0vdGV4dC9xdC9UZXh0QnJlYWtJdGVyYXRvclF0LmNwcAkod29ya2luZyBjb3B5KQ0KQEAg
LTIxLDYgKzIxLDcgQEANCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGV4dEJyZWFr
SXRlcmF0b3IuaCIKIAorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2luY2x1ZGUg
PFF0Q29yZS9xdGV4dGJvdW5kYXJ5ZmluZGVyLmg+CiAjaW5jbHVkZSA8cWRlYnVnLmg+CiAKQEAg
LTM5LDM1ICs0MCwzMSBAQA0KICAgICByZXR1cm4gUUxvY2FsZTo6c3lzdGVtKCkubmFtZSgpLnRv
TGF0aW4xKCk7CiB9CiAjZWxzZQotICAgIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGJ1ZmZlclsxMDI0
XTsKIAogICAgIGNsYXNzIFRleHRCcmVha0l0ZXJhdG9yIDogcHVibGljIFFUZXh0Qm91bmRhcnlG
aW5kZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgVGV4dEJyZWFrSXRlcmF0b3IoUVRleHRCb3Vu
ZGFyeUZpbmRlcjo6Qm91bmRhcnlUeXBlIHR5cGUsIGNvbnN0IFVDaGFyKiBzdHJpbmcsIGludCBs
ZW5ndGgpCi0gICAgICAgICAgICA6IFFUZXh0Qm91bmRhcnlGaW5kZXIodHlwZSwgKGNvbnN0IFFD
aGFyKilzdHJpbmcsIGxlbmd0aCwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkKLSAgICAgICAgICAg
ICwgbGVuZ3RoKGxlbmd0aCkKKyAgICAgICAgVGV4dEJyZWFrSXRlcmF0b3IoUVRleHRCb3VuZGFy
eUZpbmRlcjo6Qm91bmRhcnlUeXBlIHR5cGUsIFN0cmluZyBzdHJpbmcsIGludCBsZW5ndGgpCisg
ICAgICAgICAgICA6IFFUZXh0Qm91bmRhcnlGaW5kZXIodHlwZSwgc3RyaW5nKQogICAgICAgICAg
ICAgLCBzdHJpbmcoc3RyaW5nKSB7fQogICAgICAgICBUZXh0QnJlYWtJdGVyYXRvcigpCiAgICAg
ICAgICAgICA6IFFUZXh0Qm91bmRhcnlGaW5kZXIoKQotICAgICAgICAgICAgLCBsZW5ndGgoMCkK
LSAgICAgICAgICAgICwgc3RyaW5nKDApIHt9Ci0KLSAgICAgICAgaW50IGxlbmd0aDsKLSAgICAg
ICAgY29uc3QgVUNoYXIqIHN0cmluZzsKKyAgICAgICAgICAgICwgc3RyaW5nKCkge30gCisgICAg
ICAgIFN0cmluZyBzdHJpbmc7CiAgICAgfTsKIAogICAgIFRleHRCcmVha0l0ZXJhdG9yKiBzZXRV
cEl0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yJiBpdGVyYXRvciwgUVRleHRCb3VuZGFyeUZpbmRl
cjo6Qm91bmRhcnlUeXBlIHR5cGUsIGNvbnN0IFVDaGFyKiBzdHJpbmcsIGludCBsZW5ndGgpCiAg
ICAgeworCiAgICAgICAgIGlmICghc3RyaW5nIHx8ICFsZW5ndGgpCiAgICAgICAgICAgICByZXR1
cm4gMDsKIAotICAgICAgICBpZiAoaXRlcmF0b3IuaXNWYWxpZCgpICYmIHR5cGUgPT0gaXRlcmF0
b3IudHlwZSgpICYmIGxlbmd0aCA9PSBpdGVyYXRvci5sZW5ndGgKLSAgICAgICAgICAgICYmIG1l
bWNtcChzdHJpbmcsIGl0ZXJhdG9yLnN0cmluZywgbGVuZ3RoKSA9PSAwKSB7CisgICAgICAgIFN0
cmluZyBsb2NhbFN0cmluZyhzdHJpbmcsIGxlbmd0aCk7CisgICAgICAgIGlmIChpdGVyYXRvci5z
dHJpbmcgPT0gbG9jYWxTdHJpbmcpIHsKICAgICAgICAgICAgIGl0ZXJhdG9yLnRvU3RhcnQoKTsK
ICAgICAgICAgICAgIHJldHVybiAmaXRlcmF0b3I7CiAgICAgICAgIH0KIAotICAgICAgICBpdGVy
YXRvciA9IFRleHRCcmVha0l0ZXJhdG9yKHR5cGUsIHN0cmluZywgbGVuZ3RoKTsKKyAgICAgICAg
aXRlcmF0b3IgPSBUZXh0QnJlYWtJdGVyYXRvcih0eXBlLCBsb2NhbFN0cmluZywgbGVuZ3RoKTsK
IAogICAgICAgICByZXR1cm4gJml0ZXJhdG9yOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76718</attachid>
            <date>2010-12-15 17:42:33 -0800</date>
            <delta_ts>2010-12-24 02:26:21 -0800</delta_ts>
            <desc>removed extra argument passed to the fucntion</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>2809</size>
            <attacher name="Raju Kunnath">raju.kunnath</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDc0MTAxKQ0KKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
DQpAQCAtMSwzICsxLDE4IEBADQorMjAxMC0xMi0xNSAgUmFqdSBLdW5uYXRoICA8cmFqdS5rdW5u
YXRoQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbUXRdIFRleHRCcmVha0l0ZXJhdG9yIFFUIHBlcmZvcm1hbmNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTk1OAorCisgICAgICAgIFRo
ZSBwcmV2aW91cyBmaXggZm9yIHRoZSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCBoYWQgYSByZWZl
cmVuY2UgdG8gYQorICAgICAgICBwb2ludGVyIHdoaWNoIGlzIGRlbGV0ZWQgYW5kIGhlbmNlIHRo
ZSBtZW1jbXAgY3Jhc2hlZC4gVGhlIHJvb3QgY2F1c2Ugb2YgdGhpcyBpc3N1ZSBpcworICAgICAg
ICB0aGF0IGluIFN5bWJpYW4gdGhlIEZhc3RhbGxvY2F0b3IgY2xhaW0gdGhlIG1lbW9yeSBmYXN0
IGFuZCBoZW5jZSB0aGUgY3Jhc2guCisgICAgICAgIEFsc28gdGhpcyBpcyBhIHNwb3JhZGljIGNy
YXNoLgorCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9xdC9UZXh0QnJlYWtJdGVyYXRvclF0LmNw
cDoKKyAgICAgICAgKFRleHRCcmVha0l0ZXJhdG9yOjpzZXRVcEl0ZXJhdG9yKToKKwogMjAxMC0x
Mi0xNSAgRW1pbCBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFr
SXRlcmF0b3JRdC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvcXQv
VGV4dEJyZWFrSXRlcmF0b3JRdC5jcHAJKHJldmlzaW9uIDc0MTAwKQ0KKysrIFdlYkNvcmUvcGxh
dGZvcm0vdGV4dC9xdC9UZXh0QnJlYWtJdGVyYXRvclF0LmNwcAkod29ya2luZyBjb3B5KQ0KQEAg
LTIxLDYgKzIxLDcgQEANCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGV4dEJyZWFr
SXRlcmF0b3IuaCIKIAorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2luY2x1ZGUg
PFF0Q29yZS9xdGV4dGJvdW5kYXJ5ZmluZGVyLmg+CiAjaW5jbHVkZSA8cWRlYnVnLmg+CiAKQEAg
LTM5LDM1ICs0MCwzMSBAQA0KICAgICByZXR1cm4gUUxvY2FsZTo6c3lzdGVtKCkubmFtZSgpLnRv
TGF0aW4xKCk7CiB9CiAjZWxzZQotICAgIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGJ1ZmZlclsxMDI0
XTsKIAogICAgIGNsYXNzIFRleHRCcmVha0l0ZXJhdG9yIDogcHVibGljIFFUZXh0Qm91bmRhcnlG
aW5kZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgVGV4dEJyZWFrSXRlcmF0b3IoUVRleHRCb3Vu
ZGFyeUZpbmRlcjo6Qm91bmRhcnlUeXBlIHR5cGUsIGNvbnN0IFVDaGFyKiBzdHJpbmcsIGludCBs
ZW5ndGgpCi0gICAgICAgICAgICA6IFFUZXh0Qm91bmRhcnlGaW5kZXIodHlwZSwgKGNvbnN0IFFD
aGFyKilzdHJpbmcsIGxlbmd0aCwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkKLSAgICAgICAgICAg
ICwgbGVuZ3RoKGxlbmd0aCkKKyAgICAgICAgVGV4dEJyZWFrSXRlcmF0b3IoUVRleHRCb3VuZGFy
eUZpbmRlcjo6Qm91bmRhcnlUeXBlIHR5cGUsIFN0cmluZyBzdHJpbmcpCisgICAgICAgICAgICA6
IFFUZXh0Qm91bmRhcnlGaW5kZXIodHlwZSwgc3RyaW5nKQogICAgICAgICAgICAgLCBzdHJpbmco
c3RyaW5nKSB7fQogICAgICAgICBUZXh0QnJlYWtJdGVyYXRvcigpCiAgICAgICAgICAgICA6IFFU
ZXh0Qm91bmRhcnlGaW5kZXIoKQotICAgICAgICAgICAgLCBsZW5ndGgoMCkKLSAgICAgICAgICAg
ICwgc3RyaW5nKDApIHt9Ci0KLSAgICAgICAgaW50IGxlbmd0aDsKLSAgICAgICAgY29uc3QgVUNo
YXIqIHN0cmluZzsKKyAgICAgICAgICAgICwgc3RyaW5nKCkge30gCisgICAgICAgIFN0cmluZyBz
dHJpbmc7CiAgICAgfTsKIAogICAgIFRleHRCcmVha0l0ZXJhdG9yKiBzZXRVcEl0ZXJhdG9yKFRl
eHRCcmVha0l0ZXJhdG9yJiBpdGVyYXRvciwgUVRleHRCb3VuZGFyeUZpbmRlcjo6Qm91bmRhcnlU
eXBlIHR5cGUsIGNvbnN0IFVDaGFyKiBzdHJpbmcsIGludCBsZW5ndGgpCiAgICAgeworCiAgICAg
ICAgIGlmICghc3RyaW5nIHx8ICFsZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAotICAg
ICAgICBpZiAoaXRlcmF0b3IuaXNWYWxpZCgpICYmIHR5cGUgPT0gaXRlcmF0b3IudHlwZSgpICYm
IGxlbmd0aCA9PSBpdGVyYXRvci5sZW5ndGgKLSAgICAgICAgICAgICYmIG1lbWNtcChzdHJpbmcs
IGl0ZXJhdG9yLnN0cmluZywgbGVuZ3RoKSA9PSAwKSB7CisgICAgICAgIFN0cmluZyBsb2NhbFN0
cmluZyhzdHJpbmcsIGxlbmd0aCk7CisgICAgICAgIGlmIChpdGVyYXRvci5zdHJpbmcgPT0gbG9j
YWxTdHJpbmcpIHsKICAgICAgICAgICAgIGl0ZXJhdG9yLnRvU3RhcnQoKTsKICAgICAgICAgICAg
IHJldHVybiAmaXRlcmF0b3I7CiAgICAgICAgIH0KIAotICAgICAgICBpdGVyYXRvciA9IFRleHRC
cmVha0l0ZXJhdG9yKHR5cGUsIHN0cmluZywgbGVuZ3RoKTsKKyAgICAgICAgaXRlcmF0b3IgPSBU
ZXh0QnJlYWtJdGVyYXRvcih0eXBlLCBsb2NhbFN0cmluZyk7CiAKICAgICAgICAgcmV0dXJuICZp
dGVyYXRvcjsKICAgICB9Cg==
</data>
<flag name="review"
          id="67716"
          type_id="1"
          status="-"
          setter="zecke"
    />
          </attachment>
      

    </bug>

</bugzilla>