<?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>25303</bug_id>
          
          <creation_ts>2009-04-20 16:38:24 -0700</creation_ts>
          <short_desc>Skia image decoder does not need to ref its internal buffer</short_desc>
          <delta_ts>2009-05-05 10:46:29 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Peter Kasting">pkasting</reporter>
          <assigned_to name="Peter Kasting">pkasting</assigned_to>
          <cc>brettw</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>118185</commentid>
    <comment_count>0</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-04-20 16:38:24 -0700</bug_when>
    <thetext>This is a cleanup bug; for details see http://code.google.com/p/chromium/issues/detail?id=4679 .

Patch coming shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118186</commentid>
    <comment_count>1</comment_count>
      <attachid>29629</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-04-20 16:42:48 -0700</bug_when>
    <thetext>Created attachment 29629
patch v1

Though he&apos;s not a WebKit reviewer, brettw@chromium.org wrote this code originally and should probably give an opinion on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118386</commentid>
    <comment_count>2</comment_count>
    <who name="Brett Wilson (Google)">brettw</who>
    <bug_when>2009-04-22 10:34:39 -0700</bug_when>
    <thetext>The original reason this code exists is that these are put into a Vector as described in the big comment above RGBA32Buffer. This vector still exists. Can you describe what changed that makes it no longer necessary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118416</commentid>
    <comment_count>3</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-04-22 14:01:45 -0700</bug_when>
    <thetext>The reason this code existed is not just because these are put into a vector, but because they are put into a vector _and we used to return raw pointers to the underlying Skia objects_, which could become invalid when the vector copied on resize.

After landing the patch for http://code.google.com/p/chromium/issues/detail?id=4298 , we no longer deal with these raw objects, so it&apos;s safe to put things in vectors and have them copied, as other consumers of the image data won&apos;t suddenly find their pointers invalidated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119914</commentid>
    <comment_count>4</comment_count>
      <attachid>29629</attachid>
    <who name="Brett Wilson (Google)">brettw</who>
    <bug_when>2009-05-04 19:23:54 -0700</bug_when>
    <thetext>Comment on attachment 29629
patch v1

&gt; -            m_bitmapRef = other.m_bitmapRef;
&gt; +            m_bitmap = other.m_bitmap;
&gt; +            m_bitmap.lockPixels();  // Without this, getAddr32() returns NULL.

This comment reflects the symptom rather than the cause. I would say instead &quot;Always keep the pixels locked since we will be writing directly into it.&quot; or something like that.

&gt; -            m_bitmapRef = RefCountedNativeImageSkia::create();
&gt; -            SkBitmap&amp; bmp = bitmap();
&gt; -            const SkBitmap&amp; otherBmp = other.bitmap();
&gt; -            bmp.setConfig(SkBitmap::kARGB_8888_Config, other.width(),
&gt; -                          other.height(), otherBmp.rowBytes());
&gt; -            bmp.allocPixels();
&gt; +            m_bitmap.reset();
&gt; +            const NativeImageSkia&amp; otherBitmap = other.bitmap();
&gt; +            m_bitmap.setConfig(SkBitmap::kARGB_8888_Config, otherBitmap.width(),
&gt; +                              otherBitmap.height(), otherBitmap.rowBytes());
&gt; +            m_bitmap.allocPixels();
&gt;              if (width() &gt; 0 &amp;&amp; height() &gt; 0) {
&gt; -                memcpy(bmp.getAddr32(0, 0),
&gt; -                       otherBmp.getAddr32(0, 0),
&gt; -                       otherBmp.rowBytes() * height());
&gt; +                memcpy(m_bitmap.getAddr32(0, 0),
&gt; +                       otherBitmap.getAddr32(0, 0),
&gt; +                       otherBitmap.rowBytes() * height());
&gt;              }
&gt;          }


I think you can replace this function with SkBitmap::copyTo, which didn&apos;t exist when we first wrote this, it was added in response to our complaints of having to do this kind of thing :)


Otherwise, this Looks Good To Me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119921</commentid>
    <comment_count>5</comment_count>
      <attachid>29629</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-05-04 20:20:41 -0700</bug_when>
    <thetext>Comment on attachment 29629
patch v1

You have commit bit.  This looks fine from a WebKit perspective.  Assuming you address Brett&apos;s comments when landing, this is r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119991</commentid>
    <comment_count>6</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-05-05 10:46:29 -0700</bug_when>
    <thetext>Fixed Brett&apos;s comments and committed in r43244.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29629</attachid>
            <date>2009-04-20 16:42:48 -0700</date>
            <delta_ts>2009-05-04 20:20:41 -0700</delta_ts>
            <desc>patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>8838</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MjY4OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMDktMDQtMjAgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTMwMworICAgICAgICBO
byBuZWVkIHRvIHJlZiB0aGUgaW50ZXJuYWwgYnVmZmVyIGluc2lkZSB0aGUgU2tpYSBJbWFnZURl
Y29kZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9za2lhL0ltYWdlRGVj
b2Rlci5oOgorICAgICAgICAoV2ViQ29yZTo6UkdCQTMyQnVmZmVyOjpSR0JBMzJCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UkdCQTMyQnVmZmVyOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2Vi
Q29yZTo6UkdCQTMyQnVmZmVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpSR0JBMzJCdWZm
ZXI6OmNvcHlCaXRtYXBEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJHQkEzMkJ1ZmZlcjo6Yml0
bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlJHQkEzMkJ1ZmZlcjo6c2V0U2l6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpSR0JBMzJCdWZmZXI6OndpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJHQkEz
MkJ1ZmZlcjo6aGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJHQkEzMkJ1ZmZlcjo6aGFzQWxw
aGEpOgorICAgICAgICAoV2ViQ29yZTo6UkdCQTMyQnVmZmVyOjpzZXRTdGF0dXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UkdCQTMyQnVmZmVyOjpzZXRIYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3Jl
OjpSR0JBMzJCdWZmZXI6OnNldFJHQkEpOgorCiAyMDA5LTA0LTIwICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSdWJiZXJzdGFtcGVkIGJ5IE1hcmsgUm93ZQpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2Rlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tpYS9JbWFn
ZURlY29kZXIuaAkocmV2aXNpb24gNDI2ODgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDM3ICs0Miw5
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIFJlZkNvdW50ZWROYXRpdmVJ
bWFnZVNraWEgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWZDb3VudGVkTmF0aXZlSW1hZ2VTa2lhPiB7
Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWZDb3VudGVkTmF0aXZl
SW1hZ2VTa2lhPiBjcmVhdGUoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFJlZkNvdW50ZWROYXRpdmVJbWFnZVNraWEpOwotICAgICAgICB9Ci0KLSAgICAgICAg
Y29uc3QgTmF0aXZlSW1hZ2VTa2lhJiBiaXRtYXAoKSBjb25zdCB7IHJldHVybiBtX2JpdG1hcDsg
fQotICAgICAgICBOYXRpdmVJbWFnZVNraWEmIGJpdG1hcCgpIHsgcmV0dXJuIG1fYml0bWFwOyB9
Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBSZWZDb3VudGVkTmF0aXZlSW1hZ2VTa2lhKCkge30K
LSAgICAgICAgTmF0aXZlSW1hZ2VTa2lhIG1fYml0bWFwOwotICAgIH07Ci0KICAgICAvLyBUaGUg
UkdCQTMyQnVmZmVyIG9iamVjdCByZXByZXNlbnRzIHRoZSBkZWNvZGVkIGltYWdlIGRhdGEgaW4g
UkdCQTMyIGZvcm1hdC4KICAgICAvLyBUaGlzIGJ1ZmZlciBpcyB3aGF0IGFsbCBkZWNvZGVycyB3
cml0ZSBhIHNpbmdsZSBmcmFtZSBpbnRvLiAgRnJhbWVzIGFyZSB0aGVuCiAgICAgLy8gaW5zdGFu
dGlhdGVkIGZvciBkcmF3aW5nIGJ5IGJlaW5nIGhhbmRlZCB0aGlzIGJ1ZmZlci4KLSAgICAvLwot
ICAgIC8vIFRoZSBpbWFnZSBkYXRhIG9mIGFuIFJHQkEzMkJ1ZmZlciBpcyBrZXB0IGluIGFuIFNr
Qml0bWFwUmVmLCBhIHJlZmNvdW50aW5nCi0gICAgLy8gY29udGFpbmVyIGZvciBhbiBTa0JpdG1h
cC4gIEluIGFsbCBub3JtYWwgY2FzZXMsIHRoZSByZWZjb3VudCBzaG91bGQgYmUKLSAgICAvLyBl
eGFjdGx5IG9uZS4gIFRoZSBleGNlcHRpb24gaGFwcGVucyB3aGVuIHJlc2l6aW5nIHRoZSB2ZWN0
b3I8UkdCQTMyQnVmZmVyPiBpbgotICAgIC8vIEltYWdlRGVjb2Rlcjo6bV9mcmFtZUJ1ZmZlckNh
Y2hlLCB3aGljaCBjb3BpZXMgYWxsIHRoZSBidWZmZXJzIHRvIHRoZSBuZXcKLSAgICAvLyB2ZWN0
b3IsIHRodXMgdHJhbnNpZW50bHkgaW5jcmVtZW50aW5nIHRoZSByZWZjb3VudCB0byB0d28uCi0g
ICAgLy8KLSAgICAvLyBUaGUgY2hvaWNlIHRvIHVzZSBhbiBTa0JpdG1hcFJlZiBpbnN0ZWFkIG9m
IGFuIFNrQml0bWFwIGlzIG5vdCBiZWNhdXNlIG9mCi0gICAgLy8gcGVyZm9ybWFuY2UgY29uY2Vy
bnMgLS0gU2tCaXRtYXAgcmVmY291bnRzIGl0cyBpbnRlcm5hbCBkYXRhIGFueXdheS4gIFJhdGhl
ciwKLSAgICAvLyB3ZSBuZWVkIHRoZSBhZm9yZW1lbnRpb25lZCB2ZWN0b3IgcmVzaXplIHRvIHBy
ZXNlcnZlIHRoZSBleGFjdCB1bmRlcmx5aW5nCi0gICAgLy8gU2tCaXRtYXAgb2JqZWN0LCBzaW5j
ZSB3ZSBtYXkgaGF2ZSBhbHJlYWR5IGdpdmVuIGl0cyBhZGRyZXNzIHRvCi0gICAgLy8gQml0bWFw
SW1hZ2U6Om1fZnJhbWVzLiAgVXNpbmcgYW4gU2tCaXRtYXAgd291bGQgbWVhbiB0aGF0IGFmdGVy
IEltYWdlRGVjb2RlcgotICAgIC8vIHJlc2l6ZXMgaXRzIHZlY3RvciwgQml0bWFwSW1hZ2Ugd291
bGQgYmUgaG9sZGluZyBhIHBvaW50ZXIgdG8gZ2FyYmFnZS4KICAgICBjbGFzcyBSR0JBMzJCdWZm
ZXIgewogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBGcmFtZVN0YXR1cyB7IEZyYW1lRW1wdHks
IEZyYW1lUGFydGlhbCwgRnJhbWVDb21wbGV0ZSB9OwpAQCAtOTEsMTQgKzYzLDEyIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwgbV9kdXJhdGlvbigwKQogICAgICAgICAgICAg
LCBtX2Rpc3Bvc2FsTWV0aG9kKERpc3Bvc2VOb3RTcGVjaWZpZWQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIG1fYml0bWFwUmVmID0gUmVmQ291bnRlZE5hdGl2ZUltYWdlU2tpYTo6Y3JlYXRlKCk7
CiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGRvZXNuJ3QgY3JlYXRl
IGEgbmV3IGNvcHkgb2YgdGhlIGltYWdlIGRhdGEsIGl0IG9ubHkKICAgICAgICAgLy8gaW5jcmVh
c2VzIHRoZSByZWYgY291bnQgb2YgdGhlIGV4aXN0aW5nIGJpdG1hcC4KICAgICAgICAgUkdCQTMy
QnVmZmVyKGNvbnN0IFJHQkEzMkJ1ZmZlciYgb3RoZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IG1fYml0bWFwUmVmID0gUmVmQ291bnRlZE5hdGl2ZUltYWdlU2tpYTo6Y3JlYXRlKCk7CiAgICAg
ICAgICAgICBvcGVyYXRvcj0ob3RoZXIpOwogICAgICAgICB9CiAKQEAgLTExNywxOCArODcsMTgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQog
ICAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsKIAotICAgICAgICAgICAgbV9iaXRtYXBSZWYg
PSBvdGhlci5tX2JpdG1hcFJlZjsKKyAgICAgICAgICAgIG1fYml0bWFwID0gb3RoZXIubV9iaXRt
YXA7CisgICAgICAgICAgICBtX2JpdG1hcC5sb2NrUGl4ZWxzKCk7ICAvLyBXaXRob3V0IHRoaXMs
IGdldEFkZHIzMigpIHJldHVybnMgTlVMTC4KICAgICAgICAgICAgIHNldFJlY3Qob3RoZXIucmVj
dCgpKTsKICAgICAgICAgICAgIHNldFN0YXR1cyhvdGhlci5zdGF0dXMoKSk7CiAgICAgICAgICAg
ICBzZXREdXJhdGlvbihvdGhlci5kdXJhdGlvbigpKTsKICAgICAgICAgICAgIHNldERpc3Bvc2Fs
TWV0aG9kKG90aGVyLmRpc3Bvc2FsTWV0aG9kKCkpOwotICAgICAgICAgICAgc2V0SGFzQWxwaGEo
b3RoZXIuaGFzQWxwaGEoKSk7CiAgICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgIH0K
IAogICAgICAgICB2b2lkIGNsZWFyKCkKICAgICAgICAgewotICAgICAgICAgICAgbV9iaXRtYXBS
ZWYgPSBSZWZDb3VudGVkTmF0aXZlSW1hZ2VTa2lhOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1f
Yml0bWFwLnJlc2V0KCk7CiAgICAgICAgICAgICBtX3N0YXR1cyA9IEZyYW1lRW1wdHk7CiAgICAg
ICAgICAgICAvLyBOT1RFOiBEbyBub3QgcmVzZXQgb3RoZXIgbWVtYmVycyBoZXJlOyBjbGVhckZy
YW1lQnVmZmVyQ2FjaGUoKQogICAgICAgICAgICAgLy8gY2FsbHMgdGhpcyB0byBmcmVlIHRoZSBi
aXRtYXAgZGF0YSwgYnV0IG90aGVyIGZ1bmN0aW9ucyBsaWtlCkBAIC0xNDMsMjEgKzExMywyMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBpZiAodGhpcyA9PSAmb3RoZXIpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBtX2JpdG1hcFJlZiA9IFJlZkNv
dW50ZWROYXRpdmVJbWFnZVNraWE6OmNyZWF0ZSgpOwotICAgICAgICAgICAgU2tCaXRtYXAmIGJt
cCA9IGJpdG1hcCgpOwotICAgICAgICAgICAgY29uc3QgU2tCaXRtYXAmIG90aGVyQm1wID0gb3Ro
ZXIuYml0bWFwKCk7Ci0gICAgICAgICAgICBibXAuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84
ODg4X0NvbmZpZywgb3RoZXIud2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgb3Ro
ZXIuaGVpZ2h0KCksIG90aGVyQm1wLnJvd0J5dGVzKCkpOwotICAgICAgICAgICAgYm1wLmFsbG9j
UGl4ZWxzKCk7CisgICAgICAgICAgICBtX2JpdG1hcC5yZXNldCgpOworICAgICAgICAgICAgY29u
c3QgTmF0aXZlSW1hZ2VTa2lhJiBvdGhlckJpdG1hcCA9IG90aGVyLmJpdG1hcCgpOworICAgICAg
ICAgICAgbV9iaXRtYXAuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgb3Ro
ZXJCaXRtYXAud2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyQml0
bWFwLmhlaWdodCgpLCBvdGhlckJpdG1hcC5yb3dCeXRlcygpKTsKKyAgICAgICAgICAgIG1fYml0
bWFwLmFsbG9jUGl4ZWxzKCk7CiAgICAgICAgICAgICBpZiAod2lkdGgoKSA+IDAgJiYgaGVpZ2h0
KCkgPiAwKSB7Ci0gICAgICAgICAgICAgICAgbWVtY3B5KGJtcC5nZXRBZGRyMzIoMCwgMCksCi0g
ICAgICAgICAgICAgICAgICAgICAgIG90aGVyQm1wLmdldEFkZHIzMigwLCAwKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgb3RoZXJCbXAucm93Qnl0ZXMoKSAqIGhlaWdodCgpKTsKKyAgICAgICAg
ICAgICAgICBtZW1jcHkobV9iaXRtYXAuZ2V0QWRkcjMyKDAsIDApLAorICAgICAgICAgICAgICAg
ICAgICAgICBvdGhlckJpdG1hcC5nZXRBZGRyMzIoMCwgMCksCisgICAgICAgICAgICAgICAgICAg
ICAgIG90aGVyQml0bWFwLnJvd0J5dGVzKCkgKiBoZWlnaHQoKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KIAotICAgICAgICBOYXRpdmVJbWFnZVNraWEmIGJpdG1hcCgpIHsgcmV0dXJuIG1f
Yml0bWFwUmVmLT5iaXRtYXAoKTsgfQotICAgICAgICBjb25zdCBOYXRpdmVJbWFnZVNraWEmIGJp
dG1hcCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0bWFwUmVmLT5iaXRtYXAoKTsgfQorICAgICAgICBO
YXRpdmVJbWFnZVNraWEmIGJpdG1hcCgpIHsgcmV0dXJuIG1fYml0bWFwOyB9CisgICAgICAgIGNv
bnN0IE5hdGl2ZUltYWdlU2tpYSYgYml0bWFwKCkgY29uc3QgeyByZXR1cm4gbV9iaXRtYXA7IH0K
IAogICAgICAgICAvLyBNdXN0IGJlIGNhbGxlZCBiZWZvcmUgYW55IHBpeGVscyBhcmUgd3JpdHRl
bi4gV2lsbCByZXR1cm4gdHJ1ZSBvbgogICAgICAgICAvLyBzdWNjZXNzLCBmYWxzZSBpZiB0aGUg
bWVtb3J5IGFsbG9jYXRpb24gZmFpbHMuCkBAIC0xNjUsMzcgKzEzNCwzNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gc2hvdWxk
IG9ubHkgYmUgY2FsbGVkIG9uY2UsIGl0IHdpbGwgbGVhayBtZW1vcnkKICAgICAgICAgICAgIC8v
IG90aGVyd2lzZS4KLSAgICAgICAgICAgIFNrQml0bWFwJiBibXAgPSBiaXRtYXAoKTsKLSAgICAg
ICAgICAgIEFTU0VSVChibXAud2lkdGgoKSA9PSAwICYmIGJtcC5oZWlnaHQoKSA9PSAwKTsKLSAg
ICAgICAgICAgIGJtcC5zZXRDb25maWcoU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnLCB3aWR0
aCwgaGVpZ2h0KTsKLSAgICAgICAgICAgIGlmICghYm1wLmFsbG9jUGl4ZWxzKCkpCisgICAgICAg
ICAgICBBU1NFUlQobV9iaXRtYXAud2lkdGgoKSA9PSAwICYmIG1fYml0bWFwLmhlaWdodCgpID09
IDApOworICAgICAgICAgICAgbV9iaXRtYXAuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4
X0NvbmZpZywgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICBpZiAoIW1fYml0bWFwLmFsbG9j
UGl4ZWxzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgLy8gQWxsb2NhdGlvbiBm
YWlsdXJlLCBtYXliZSB0aGUgYml0bWFwIHdhcyB0b28gYmlnLgogCiAgICAgICAgICAgICAvLyBD
bGVhciB0aGUgaW1hZ2UuCi0gICAgICAgICAgICBibXAuZXJhc2VBUkdCKDAsIDAsIDAsIDApOwor
ICAgICAgICAgICAgbV9iaXRtYXAuZXJhc2VBUkdCKDAsIDAsIDAsIDApOwogCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIGludCB3aWR0aCgpIGNvbnN0IHsg
cmV0dXJuIGJpdG1hcCgpLndpZHRoKCk7IH0KLSAgICAgICAgaW50IGhlaWdodCgpIGNvbnN0IHsg
cmV0dXJuIGJpdG1hcCgpLmhlaWdodCgpOyB9CisgICAgICAgIGludCB3aWR0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fYml0bWFwLndpZHRoKCk7IH0KKyAgICAgICAgaW50IGhlaWdodCgpIGNvbnN0IHsg
cmV0dXJuIG1fYml0bWFwLmhlaWdodCgpOyB9CiAKICAgICAgICAgY29uc3QgSW50UmVjdCYgcmVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogICAgICAgICBGcmFtZVN0YXR1cyBzdGF0dXMo
KSBjb25zdCB7IHJldHVybiBtX3N0YXR1czsgfQogICAgICAgICB1bnNpZ25lZCBkdXJhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KICAgICAgICAgRnJhbWVEaXNwb3NhbE1ldGhv
ZCBkaXNwb3NhbE1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcG9zYWxNZXRob2Q7IH0KLSAg
ICAgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0IHsgcmV0dXJuICFiaXRtYXAoKS5pc09wYXF1ZSgp
OyB9CisgICAgICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdCB7IHJldHVybiAhbV9iaXRtYXAuaXNP
cGFxdWUoKTsgfQogCiAgICAgICAgIHZvaWQgc2V0UmVjdChjb25zdCBJbnRSZWN0JiByKSB7IG1f
cmVjdCA9IHI7IH0KICAgICAgICAgdm9pZCBzZXRTdGF0dXMoRnJhbWVTdGF0dXMgcykKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKHMgPT0gRnJhbWVDb21wbGV0ZSkKLSAgICAgICAgICAgICAg
ICBtX2JpdG1hcFJlZi0+Yml0bWFwKCkuc2V0RGF0YUNvbXBsZXRlKCk7ICAvLyBUZWxsIHRoZSBi
aXRtYXAgaXQncyBkb25lLgorICAgICAgICAgICAgICAgIG1fYml0bWFwLnNldERhdGFDb21wbGV0
ZSgpOyAgLy8gVGVsbCB0aGUgYml0bWFwIGl0J3MgZG9uZS4KICAgICAgICAgICAgIG1fc3RhdHVz
ID0gczsKICAgICAgICAgfQogICAgICAgICB2b2lkIHNldER1cmF0aW9uKHVuc2lnbmVkIGR1cmF0
aW9uKSB7IG1fZHVyYXRpb24gPSBkdXJhdGlvbjsgfQogICAgICAgICB2b2lkIHNldERpc3Bvc2Fs
TWV0aG9kKEZyYW1lRGlzcG9zYWxNZXRob2QgbWV0aG9kKSB7IG1fZGlzcG9zYWxNZXRob2QgPSBt
ZXRob2Q7IH0KLSAgICAgICAgdm9pZCBzZXRIYXNBbHBoYShib29sIGFscGhhKSB7IGJpdG1hcCgp
LnNldElzT3BhcXVlKCFhbHBoYSk7IH0KKyAgICAgICAgdm9pZCBzZXRIYXNBbHBoYShib29sIGFs
cGhhKSB7IG1fYml0bWFwLnNldElzT3BhcXVlKCFhbHBoYSk7IH0KIAogICAgICAgICBzdGF0aWMg
dm9pZCBzZXRSR0JBKHVpbnQzMl90KiBkZXN0LCB1aW50OF90IHIsIHVpbnQ4X3QgZywgdWludDhf
dCBiLCB1aW50OF90IGEpCiAgICAgICAgIHsKQEAgLTIxNSwxMSArMTgzLDExIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNldFJHQkEoaW50IHgsIGludCB5LCB1aW50OF90
IHIsIHVpbnQ4X3QgZywgdWludDhfdCBiLCB1aW50OF90IGEpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHNldFJHQkEoYml0bWFwKCkuZ2V0QWRkcjMyKHgsIHkpLCByLCBnLCBiLCBhKTsKKyAgICAg
ICAgICAgIHNldFJHQkEobV9iaXRtYXAuZ2V0QWRkcjMyKHgsIHkpLCByLCBnLCBiLCBhKTsKICAg
ICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPFJlZkNvdW50ZWROYXRpdmVJ
bWFnZVNraWE+IG1fYml0bWFwUmVmOworICAgICAgICBOYXRpdmVJbWFnZVNraWEgbV9iaXRtYXA7
CiAgICAgICAgIEludFJlY3QgbV9yZWN0OyAgICAvLyBUaGUgcmVjdCBvZiB0aGUgb3JpZ2luYWwg
c3BlY2lmaWVkIGZyYW1lIHdpdGhpbiB0aGUgb3ZlcmFsbCBidWZmZXIuCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgYWx3YXlzIGp1c3QgYmUgdGhlIGVudGlyZSBidWZm
ZXIgZXhjZXB0IGZvciBHSUYgZnJhbWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3
aG9zZSBvcmlnaW5hbCByZWN0IHdhcyBzbWFsbGVyIHRoYW4gdGhlIG92ZXJhbGwgaW1hZ2Ugc2l6
ZS4K
</data>
<flag name="review"
          id="14801"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>