<?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>69144</bug_id>
          
          <creation_ts>2011-09-30 06:23:27 -0700</creation_ts>
          <short_desc>Apply color profile found to decoded bitmap (Skia on Mac)</short_desc>
          <delta_ts>2012-03-12 16:39:26 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Cary Clark">caryclark</reporter>
          <assigned_to name="Cary Clark">caryclark</assigned_to>
          <cc>abarth</cc>
    
    <cc>noel.gordon</cc>
    
    <cc>senorblanco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>476057</commentid>
    <comment_count>0</comment_count>
    <who name="Cary Clark">caryclark</who>
    <bug_when>2011-09-30 06:23:27 -0700</bug_when>
    <thetext>Apply color profile found to decoded bitmap (Skia on Mac)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476064</commentid>
    <comment_count>1</comment_count>
      <attachid>109292</attachid>
    <who name="Cary Clark">caryclark</who>
    <bug_when>2011-09-30 06:43:16 -0700</bug_when>
    <thetext>Created attachment 109292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476210</commentid>
    <comment_count>2</comment_count>
      <attachid>109292</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-09-30 11:45:14 -0700</bug_when>
    <thetext>Comment on attachment 109292
Patch

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

Please fix the #include path; the rest is up to you.

&gt; Source/WebCore/platform/image-decoders/skia/ImageDecoderSkia.cpp:34
&gt; +#include &quot;third_party/skia/include/utils/mac/SkCGUtils.h&quot;

We don&apos;t hardcode chrome&apos;s third_party paths in WebKit code.  AFAICT, we -I the skia include dirs in (chrome&apos;s) skia/skia.gyp.  It looks like it&apos;s already there (under &apos;OS == &quot;mac&quot;&apos; [...] &apos;include_dirs&quot;), so you should just be able to #include &quot;SkCGUtils.h&quot; here.  If not, you may have to land a Chrome change to fix it first.

&gt; Source/WebCore/platform/image-decoders/skia/ImageDecoderSkia.cpp:124
&gt; +    bitmap.lockPixels();

Nit:  Could use an SkAutoLockPixels guard instead.

&gt; Source/WebCore/platform/image-decoders/skia/ImageDecoderSkia.cpp:127
&gt; +    if (bmap) {

Nit:  WebKit style is to use early-return where possible, so if you used the SkAutoLockPixels above, you could just 

if (!bmap)
    return;

here.

&gt; Source/WebCore/platform/image-decoders/skia/ImageDecoderSkia.cpp:150
&gt; +    m_colorProfile = colorProfile;

Is this file compiled on non-mac platforms?  (I&apos;ve never looked into the image decoders much before).  If so, I guess this will just be setting a color profile that we subsequently ignore on non-mac.  Not a big deal, I suppose, just that it will no generate a log message on incorrect code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476220</commentid>
    <comment_count>3</comment_count>
      <attachid>109292</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-30 11:59:05 -0700</bug_when>
    <thetext>Comment on attachment 109292
Patch

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

&gt; Source/WebCore/platform/image-decoders/skia/ImageDecoderSkia.cpp:126
&gt; +    RetainPtr&lt;CGContextRef&gt; bmap(AdoptCF, CGBitmapContextCreate(pixels, width, height, 8, width * 4, deviceRGBColorSpaceRef(), kCGBitmapByteOrder32Host | kCGImageAlphaPremultipliedFirst));

Another nit: Please use complete words when naming variables.  &quot;bmap&quot; isn&apos;t really a WebKit-style name.

&gt; Source/WebCore/platform/image-decoders/skia/ImageDecoderSkia.cpp:130
&gt; +        CGContextDrawImage(bmap.get(), bounds, srcImage);

This does a memcpy of the image?  I suppose that&apos;s unavoidable unless we resolve the color space as we decode the image.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476301</commentid>
    <comment_count>4</comment_count>
      <attachid>109342</attachid>
    <who name="Cary Clark">caryclark</who>
    <bug_when>2011-09-30 14:08:01 -0700</bug_when>
    <thetext>Created attachment 109342
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476302</commentid>
    <comment_count>5</comment_count>
      <attachid>109292</attachid>
    <who name="Cary Clark">caryclark</who>
    <bug_when>2011-09-30 14:09:41 -0700</bug_when>
    <thetext>Comment on attachment 109292
Patch

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

&gt;&gt; Source/WebCore/platform/image-decoders/skia/ImageDecoderSkia.cpp:34
&gt;&gt; +#include &quot;third_party/skia/include/utils/mac/SkCGUtils.h&quot;
&gt; 
&gt; We don&apos;t hardcode chrome&apos;s third_party paths in WebKit code.  AFAICT, we -I the skia include dirs in (chrome&apos;s) skia/skia.gyp.  It looks like it&apos;s already there (under &apos;OS == &quot;mac&quot;&apos; [...] &apos;include_dirs&quot;), so you should just be able to #include &quot;SkCGUtils.h&quot; here.  If not, you may have to land a Chrome change to fix it first.

Done.

&gt;&gt; Source/WebCore/platform/image-decoders/skia/ImageDecoderSkia.cpp:124
&gt;&gt; +    bitmap.lockPixels();
&gt; 
&gt; Nit:  Could use an SkAutoLockPixels guard instead.

Done.

&gt;&gt; Source/WebCore/platform/image-decoders/skia/ImageDecoderSkia.cpp:130
&gt;&gt; +        CGContextDrawImage(bmap.get(), bounds, srcImage);
&gt; 
&gt; This does a memcpy of the image?  I suppose that&apos;s unavoidable unless we resolve the color space as we decode the image.

Yes. Not sure how to avoid this even with our own version of CMS. That&apos;s certainly something to keep in mind in the future.

&gt;&gt; Source/WebCore/platform/image-decoders/skia/ImageDecoderSkia.cpp:150
&gt;&gt; +    m_colorProfile = colorProfile;
&gt; 
&gt; Is this file compiled on non-mac platforms?  (I&apos;ve never looked into the image decoders much before).  If so, I guess this will just be setting a color profile that we subsequently ignore on non-mac.  Not a big deal, I suppose, just that it will no generate a log message on incorrect code.

Fixed not to compile code on non-Mac platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476330</commentid>
    <comment_count>6</comment_count>
      <attachid>109342</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-09-30 14:40:08 -0700</bug_when>
    <thetext>Comment on attachment 109342
Patch

Looks good.  Thanks for the fixes.  However, note that you&apos;ll need to roll DEPS in WebKit past your chrome change before this can land, otherwise the build.webkit.org builders will fail to compile.  The file is in WebKit/Source/WebKit/chromium/DEPS.  You can add make that change on landing this patch if you like, although if it&apos;s a big roll you might want to upload it here to get some EWS coverage.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476970</commentid>
    <comment_count>7</comment_count>
      <attachid>109342</attachid>
    <who name="Cary Clark">caryclark</who>
    <bug_when>2011-10-03 07:52:25 -0700</bug_when>
    <thetext>Comment on attachment 109342
Patch

Make sure that corresponding Chromium DEPS has rolled and that there is no layout regression before committing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477686</commentid>
    <comment_count>8</comment_count>
      <attachid>109342</attachid>
    <who name="Cary Clark">caryclark</who>
    <bug_when>2011-10-04 10:18:23 -0700</bug_when>
    <thetext>Comment on attachment 109342
Patch

test expectations have been updated to disable Skia on Mac for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477730</commentid>
    <comment_count>9</comment_count>
      <attachid>109342</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-04 10:48:53 -0700</bug_when>
    <thetext>Comment on attachment 109342
Patch

Clearing flags on attachment: 109342

Committed r96609: &lt;http://trac.webkit.org/changeset/96609&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477731</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-04 10:48:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538324</commentid>
    <comment_count>11</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-01-18 16:42:42 -0800</bug_when>
    <thetext>Cary sorry for the question: I waded into this code recently and noticed there is a CGImageRef created at line 123 ImageDecoderSkia.cpp in your patch.  Who owns that CGImageRef, and does it need to be released?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538672</commentid>
    <comment_count>12</comment_count>
    <who name="Cary Clark">caryclark</who>
    <bug_when>2012-01-19 06:44:05 -0800</bug_when>
    <thetext>Good catch; looks like a leak to me. I assume that this should be 

RetainPtr&lt;CGImageRef&gt; srcImage = ...

(In reply to comment #11)
&gt; Cary sorry for the question: I waded into this code recently and noticed there is a CGImageRef created at line 123 ImageDecoderSkia.cpp in your patch.  Who owns that CGImageRef, and does it need to be released?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540387</commentid>
    <comment_count>13</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-01-22 22:15:36 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Good catch; looks like a leak to me. I assume that this should be 
&gt; 
&gt; RetainPtr&lt;CGImageRef&gt; srcImage = ...

I believe that&apos;s correct.  How will CGContextDrawImage respond if given a NULL imageRef?  SkCreateCGImageRefWithColorspace() might fail, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576711</commentid>
    <comment_count>14</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-03-12 16:39:26 -0700</bug_when>
    <thetext>Bug 80892.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109292</attachid>
            <date>2011-09-30 06:43:16 -0700</date>
            <delta_ts>2011-09-30 14:09:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69144-20110930094315.patch</filename>
            <type>text/plain</type>
            <size>4474</size>
            <attacher name="Cary Clark">caryclark</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk2Mzk5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDktMzAgIENhcnkgQ2xh
cmsgIDxjYXJ5Y2xhcmtAZ29vZ2xlLmNvbT4KKworICAgICAgICBBcHBseSBjb2xvciBwcm9maWxl
IGZvdW5kIHRvIGRlY29kZWQgYml0bWFwIChTa2lhIG9uIE1hYykKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MTQ0CisgICAgICAgIFRoaXMgZml4ZXMg
aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9OTc4MzAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcg
dGVzdHMuIFRoaXMgcGxhdGZvcm0gaXMgbm90IGVuYWJsZWQuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgQWRkIGNvbG9yIHByb2Zp
bGUgc2xvdCB0byBTa2lhIHZhcmlhdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXNv
bHZlQ29sb3JTcGFjZSk6CisgICAgICAgIEFkanVzdCB0aGUgYml0bWFwIGluIHBsYWNlIHRvIHVz
ZSB0aGUgc3VwcGxpZWQgY29sb3Igc3BhY2UuCisKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNv
bG9yU3BhY2UpOgorICAgICAgICBDcmVhdGUgYSBDR0NvbG9yU3BhY2UgZnJvbSBhIGNvbG9yIHBy
b2ZpbGUuCisKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OnNldENvbG9yUHJvZmlsZSk6
CisgICAgICAgIFNhdmUgdGhlIGltYWdlJ3MgY29sb3IgcHJvZmlsZSB1bnRpbCB0aGUgaW1hZ2Ug
aXMgY29tcGxldGUuCisKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OnNldFN0YXR1cyk6
CisgICAgICAgIEFwcGx5IHRoZSBjb2xvciBwcm9maWxlLCBpZiBhbnksIHRvIHRoZSBpbWFnZS4K
KwogMjAxMS0wOS0zMCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogW2Nocm9taXVtXSBleHBvc2UgaW5zcGVjdG9yIHByb3RvY29s
IHZlcnNpb24gdG8gdGhlIGVtYmVkZGVyLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgJKHJldmlzaW9uIDk2Mzk5
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4OCw2ICsxODgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICNpZiBVU0UoU0tJQSkKICAgICAgICAgTmF0aXZlSW1hZ2VTa2lhIG1fYml0bWFwOworICAg
ICAgICBDb2xvclByb2ZpbGUgbV9jb2xvclByb2ZpbGU7CiAjZWxpZiBQTEFURk9STShRVCkKICAg
ICAgICAgbXV0YWJsZSBRUGl4bWFwIG1fcGl4bWFwOwogICAgICAgICBtdXRhYmxlIFFJbWFnZSBt
X2ltYWdlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tp
YS9JbWFnZURlY29kZXJTa2lhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2RlclNraWEuY3BwCShyZXZpc2lvbiA5
NjM5OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3NraWEvSW1h
Z2VEZWNvZGVyU2tpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDExIEBACiAKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogCisjaWYgUExBVEZPUk0oQ0hST01JVU0pICYmIE9T
KERBUldJTikKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgorI2luY2x1ZGUgInRoaXJk
X3BhcnR5L3NraWEvaW5jbHVkZS91dGlscy9tYWMvU2tDR1V0aWxzLmgiCisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBJbWFnZUZyYW1lOjpJbWFnZUZyYW1lKCkKQEAgLTExMCwxNiAr
MTE1LDUzIEBAIHZvaWQgSW1hZ2VGcmFtZTo6c2V0SGFzQWxwaGEoYm9vbCBhbHBoYSkKICAgICBt
X2JpdG1hcC5iaXRtYXAoKS5zZXRJc09wYXF1ZSghYWxwaGEpOwogfQogCisjaWYgUExBVEZPUk0o
Q0hST01JVU0pICYmIE9TKERBUldJTikKK3N0YXRpYyB2b2lkIHJlc29sdmVDb2xvclNwYWNlKGNv
bnN0IFNrQml0bWFwJiBiaXRtYXAsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKQoreworICAg
IGludCB3aWR0aCA9IGJpdG1hcC53aWR0aCgpOworICAgIGludCBoZWlnaHQgPSBiaXRtYXAuaGVp
Z2h0KCk7CisgICAgQ0dJbWFnZVJlZiBzcmNJbWFnZSA9IFNrQ3JlYXRlQ0dJbWFnZVJlZldpdGhD
b2xvcnNwYWNlKGJpdG1hcCwgY29sb3JTcGFjZSk7CisgICAgYml0bWFwLmxvY2tQaXhlbHMoKTsK
KyAgICB2b2lkKiBwaXhlbHMgPSBiaXRtYXAuZ2V0UGl4ZWxzKCk7CisgICAgUmV0YWluUHRyPENH
Q29udGV4dFJlZj4gYm1hcChBZG9wdENGLCBDR0JpdG1hcENvbnRleHRDcmVhdGUocGl4ZWxzLCB3
aWR0aCwgaGVpZ2h0LCA4LCB3aWR0aCAqIDQsIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKSwga0NH
Qml0bWFwQnl0ZU9yZGVyMzJIb3N0IHwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCkp
OworICAgIGlmIChibWFwKSB7CisgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShibWFwLmdl
dCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKKyAgICAgICAgQ0dSZWN0IGJvdW5kcyA9IHsgezAsIDB9
LCB7d2lkdGgsIGhlaWdodH0gfTsKKyAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJtYXAuZ2V0
KCksIGJvdW5kcywgc3JjSW1hZ2UpOworICAgIH0KKyAgICBiaXRtYXAudW5sb2NrUGl4ZWxzKCk7
Cit9CisKK3N0YXRpYyBDR0NvbG9yU3BhY2VSZWYgY3JlYXRlQ29sb3JTcGFjZShjb25zdCBDb2xv
clByb2ZpbGUmIGNvbG9yUHJvZmlsZSkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRh
KEFkb3B0Q0YsIENGRGF0YUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCByZWludGVycHJldF9j
YXN0PGNvbnN0IFVJbnQ4Kj4oY29sb3JQcm9maWxlLmRhdGEoKSksIGNvbG9yUHJvZmlsZS5zaXpl
KCkpKTsKKyNpZm5kZWYgVEFSR0VUSU5HX0xFT1BBUkQKKyAgICByZXR1cm4gQ0dDb2xvclNwYWNl
Q3JlYXRlV2l0aElDQ1Byb2ZpbGUoZGF0YS5nZXQoKSk7CisjZWxzZQorICAgIFJldGFpblB0cjxD
R0RhdGFQcm92aWRlclJlZj4gcHJvZmlsZURhdGFQcm92aWRlcihBZG9wdENGLCBDR0RhdGFQcm92
aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YS5nZXQoKSkpOworICAgIENHRmxvYXQgcmFuZ2VzW10g
PSB7MC4wLCAyNTUuMCwgMC4wLCAyNTUuMCwgMC4wLCAyNTUuMH07CisgICAgcmV0dXJuIENHQ29s
b3JTcGFjZUNyZWF0ZUlDQ0Jhc2VkKDMsIHJhbmdlcywgcHJvZmlsZURhdGFQcm92aWRlci5nZXQo
KSwgZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpKTsKKyNlbmRpZgorfQorI2VuZGlmCisKIHZvaWQg
SW1hZ2VGcmFtZTo6c2V0Q29sb3JQcm9maWxlKGNvbnN0IENvbG9yUHJvZmlsZSYgY29sb3JQcm9m
aWxlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9jb2xvclByb2ZpbGUgPSBjb2xv
clByb2ZpbGU7CiB9CiAKIHZvaWQgSW1hZ2VGcmFtZTo6c2V0U3RhdHVzKEZyYW1lU3RhdHVzIHN0
YXR1cykKIHsKICAgICBtX3N0YXR1cyA9IHN0YXR1czsKLSAgICBpZiAobV9zdGF0dXMgPT0gRnJh
bWVDb21wbGV0ZSkKKyAgICBpZiAobV9zdGF0dXMgPT0gRnJhbWVDb21wbGV0ZSkgewogICAgICAg
ICBtX2JpdG1hcC5zZXREYXRhQ29tcGxldGUoKTsgIC8vIFRlbGwgdGhlIGJpdG1hcCBpdCdzIGRv
bmUuCisjaWYgUExBVEZPUk0oQ0hST01JVU0pICYmIE9TKERBUldJTikKKyAgICAgICAgaWYgKG1f
Y29sb3JQcm9maWxlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgUmV0
YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY2dDb2xvclNwYWNlKEFkb3B0Q0YsIGNyZWF0ZUNvbG9y
U3BhY2UobV9jb2xvclByb2ZpbGUpKTsKKyAgICAgICAgcmVzb2x2ZUNvbG9yU3BhY2UobV9iaXRt
YXAuYml0bWFwKCksIGNnQ29sb3JTcGFjZS5nZXQoKSk7CisjZW5kaWYKKyAgICB9CiB9CiAKIGlu
dCBJbWFnZUZyYW1lOjp3aWR0aCgpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109342</attachid>
            <date>2011-09-30 14:08:01 -0700</date>
            <delta_ts>2011-10-04 10:48:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69144-20110930170801.patch</filename>
            <type>text/plain</type>
            <size>4533</size>
            <attacher name="Cary Clark">caryclark</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk2NDAyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDktMzAgIENhcnkgQ2xh
cmsgIDxjYXJ5Y2xhcmtAZ29vZ2xlLmNvbT4KKworICAgICAgICBBcHBseSBjb2xvciBwcm9maWxl
IGZvdW5kIHRvIGRlY29kZWQgYml0bWFwIChTa2lhIG9uIE1hYykKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MTQ0CisgICAgICAgIFRoaXMgZml4ZXMg
aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9OTc4MzAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcg
dGVzdHMuIFRoaXMgcGxhdGZvcm0gaXMgbm90IGVuYWJsZWQuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgQWRkIGNvbG9yIHByb2Zp
bGUgc2xvdCB0byBTa2lhIHZhcmlhdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXNv
bHZlQ29sb3JTcGFjZSk6CisgICAgICAgIEFkanVzdCB0aGUgYml0bWFwIGluIHBsYWNlIHRvIHVz
ZSB0aGUgc3VwcGxpZWQgY29sb3Igc3BhY2UuCisKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNv
bG9yU3BhY2UpOgorICAgICAgICBDcmVhdGUgYSBDR0NvbG9yU3BhY2UgZnJvbSBhIGNvbG9yIHBy
b2ZpbGUuCisKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OnNldENvbG9yUHJvZmlsZSk6
CisgICAgICAgIFNhdmUgdGhlIGltYWdlJ3MgY29sb3IgcHJvZmlsZSB1bnRpbCB0aGUgaW1hZ2Ug
aXMgY29tcGxldGUuCisKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OnNldFN0YXR1cyk6
CisgICAgICAgIEFwcGx5IHRoZSBjb2xvciBwcm9maWxlLCBpZiBhbnksIHRvIHRoZSBpbWFnZS4K
KwogMjAxMS0wOS0zMCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogW2Nocm9taXVtXSBleHBvc2UgaW5zcGVjdG9yIHByb3RvY29s
IHZlcnNpb24gdG8gdGhlIGVtYmVkZGVyLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgJKHJldmlzaW9uIDk2NDAy
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4OCw2ICsxODgsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICNpZiBVU0UoU0tJQSkKICAgICAgICAgTmF0aXZlSW1hZ2VTa2lhIG1fYml0bWFwOworI2lm
IFBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pCisgICAgICAgIENvbG9yUHJvZmlsZSBt
X2NvbG9yUHJvZmlsZTsKKyNlbmRpZgogI2VsaWYgUExBVEZPUk0oUVQpCiAgICAgICAgIG11dGFi
bGUgUVBpeG1hcCBtX3BpeG1hcDsKICAgICAgICAgbXV0YWJsZSBRSW1hZ2UgbV9pbWFnZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3NraWEvSW1hZ2VEZWNv
ZGVyU2tpYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvc2tpYS9JbWFnZURlY29kZXJTa2lhLmNwcAkocmV2aXNpb24gOTY0MDIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2RlclNr
aWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSwxMSBAQAogCiAjaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKIAorI2lmIFBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pCisj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKKyNpbmNsdWRlICJTa0NHVXRpbHMuaCIKKyNl
bmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEltYWdlRnJhbWU6OkltYWdlRnJhbWUoKQpA
QCAtMTEwLDE2ICsxMTUsNTYgQEAgdm9pZCBJbWFnZUZyYW1lOjpzZXRIYXNBbHBoYShib29sIGFs
cGhhKQogICAgIG1fYml0bWFwLmJpdG1hcCgpLnNldElzT3BhcXVlKCFhbHBoYSk7CiB9CiAKKyNp
ZiBQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKQorc3RhdGljIHZvaWQgcmVzb2x2ZUNv
bG9yU3BhY2UoY29uc3QgU2tCaXRtYXAmIGJpdG1hcCwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3Bh
Y2UpCit7CisgICAgaW50IHdpZHRoID0gYml0bWFwLndpZHRoKCk7CisgICAgaW50IGhlaWdodCA9
IGJpdG1hcC5oZWlnaHQoKTsKKyAgICBDR0ltYWdlUmVmIHNyY0ltYWdlID0gU2tDcmVhdGVDR0lt
YWdlUmVmV2l0aENvbG9yc3BhY2UoYml0bWFwLCBjb2xvclNwYWNlKTsKKyAgICBTa0F1dG9Mb2Nr
UGl4ZWxzIGxvY2soYml0bWFwKTsKKyAgICB2b2lkKiBwaXhlbHMgPSBiaXRtYXAuZ2V0UGl4ZWxz
KCk7CisgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gY2dCaXRtYXAoQWRvcHRDRiwgQ0dCaXRt
YXBDb250ZXh0Q3JlYXRlKHBpeGVscywgd2lkdGgsIGhlaWdodCwgOCwgd2lkdGggKiA0LCBkZXZp
Y2VSR0JDb2xvclNwYWNlUmVmKCksIGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCB8IGtDR0ltYWdl
QWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QpKTsKKyAgICBpZiAoIWNnQml0bWFwKQorICAgICAgICBy
ZXR1cm47CisgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGNnQml0bWFwLmdldCgpLCBrQ0dCbGVu
ZE1vZGVDb3B5KTsKKyAgICBDR1JlY3QgYm91bmRzID0geyB7MCwgMH0sIHt3aWR0aCwgaGVpZ2h0
fSB9OworICAgIENHQ29udGV4dERyYXdJbWFnZShjZ0JpdG1hcC5nZXQoKSwgYm91bmRzLCBzcmNJ
bWFnZSk7Cit9CisKK3N0YXRpYyBDR0NvbG9yU3BhY2VSZWYgY3JlYXRlQ29sb3JTcGFjZShjb25z
dCBDb2xvclByb2ZpbGUmIGNvbG9yUHJvZmlsZSkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBkYXRhKEFkb3B0Q0YsIENGRGF0YUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCByZWludGVy
cHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oY29sb3JQcm9maWxlLmRhdGEoKSksIGNvbG9yUHJvZmls
ZS5zaXplKCkpKTsKKyNpZm5kZWYgVEFSR0VUSU5HX0xFT1BBUkQKKyAgICByZXR1cm4gQ0dDb2xv
clNwYWNlQ3JlYXRlV2l0aElDQ1Byb2ZpbGUoZGF0YS5nZXQoKSk7CisjZWxzZQorICAgIFJldGFp
blB0cjxDR0RhdGFQcm92aWRlclJlZj4gcHJvZmlsZURhdGFQcm92aWRlcihBZG9wdENGLCBDR0Rh
dGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YS5nZXQoKSkpOworICAgIENHRmxvYXQgcmFu
Z2VzW10gPSB7MC4wLCAyNTUuMCwgMC4wLCAyNTUuMCwgMC4wLCAyNTUuMH07CisgICAgcmV0dXJu
IENHQ29sb3JTcGFjZUNyZWF0ZUlDQ0Jhc2VkKDMsIHJhbmdlcywgcHJvZmlsZURhdGFQcm92aWRl
ci5nZXQoKSwgZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpKTsKKyNlbmRpZgorfQorI2VuZGlmCisK
IHZvaWQgSW1hZ2VGcmFtZTo6c2V0Q29sb3JQcm9maWxlKGNvbnN0IENvbG9yUHJvZmlsZSYgY29s
b3JQcm9maWxlKQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pCisgICAg
bV9jb2xvclByb2ZpbGUgPSBjb2xvclByb2ZpbGU7CisjZWxzZQogICAgIG5vdEltcGxlbWVudGVk
KCk7CisjZW5kaWYKIH0KIAogdm9pZCBJbWFnZUZyYW1lOjpzZXRTdGF0dXMoRnJhbWVTdGF0dXMg
c3RhdHVzKQogewogICAgIG1fc3RhdHVzID0gc3RhdHVzOwotICAgIGlmIChtX3N0YXR1cyA9PSBG
cmFtZUNvbXBsZXRlKQorICAgIGlmIChtX3N0YXR1cyA9PSBGcmFtZUNvbXBsZXRlKSB7CiAgICAg
ICAgIG1fYml0bWFwLnNldERhdGFDb21wbGV0ZSgpOyAgLy8gVGVsbCB0aGUgYml0bWFwIGl0J3Mg
ZG9uZS4KKyNpZiBQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKQorICAgICAgICBpZiAo
bV9jb2xvclByb2ZpbGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBS
ZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjZ0NvbG9yU3BhY2UoQWRvcHRDRiwgY3JlYXRlQ29s
b3JTcGFjZShtX2NvbG9yUHJvZmlsZSkpOworICAgICAgICByZXNvbHZlQ29sb3JTcGFjZShtX2Jp
dG1hcC5iaXRtYXAoKSwgY2dDb2xvclNwYWNlLmdldCgpKTsKKyNlbmRpZgorICAgIH0KIH0KIAog
aW50IEltYWdlRnJhbWU6OndpZHRoKCkgY29uc3QK
</data>

          </attachment>
      

    </bug>

</bugzilla>