<?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>96036</bug_id>
          
          <creation_ts>2012-09-06 16:20:40 -0700</creation_ts>
          <short_desc>IndexedDB: IDBFactory.deleteDatabase() is slow</short_desc>
          <delta_ts>2012-09-10 17:50:15 -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="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>alecflett</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>713819</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-06 16:20:40 -0700</bug_when>
    <thetext>IndexedDB: IDBFactory.deleteDatabase() is slow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713829</commentid>
    <comment_count>1</comment_count>
      <attachid>162616</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-06 16:26:00 -0700</bug_when>
    <thetext>Created attachment 162616
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713830</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-06 16:26:18 -0700</bug_when>
    <thetext>Please take a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713847</commentid>
    <comment_count>3</comment_count>
      <attachid>162616</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-09-06 16:42:53 -0700</bug_when>
    <thetext>Comment on attachment 162616
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:378
&gt; +    return m_db-&gt;remove(key);

Previously the database name and entries were deleted in one atomic WriteBatch.  It looks like here they are in two separate WriteBatches.  Accurate?  Problematic?  What would our code do if it opened a database and found a name entry but no metadata or other entries?

A more theoretically-sound solution might be to add a LevelDBNoReadTransaction that is just a light wrapper around a write batch and leaves out the whole AVLTree stuff.  But if our open code would successfully handle a lone database name entry then that&apos;s probably overkill.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714453</commentid>
    <comment_count>4</comment_count>
      <attachid>162616</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-07 06:29:04 -0700</bug_when>
    <thetext>Comment on attachment 162616
Patch

Attachment 162616 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13770763

New failing tests:
inspector/styles/protocol-css-regions-commands.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714555</commentid>
    <comment_count>5</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-07 08:42:46 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 162616 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162616&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:378
&gt; &gt; +    return m_db-&gt;remove(key);
&gt; 
&gt; Previously the database name and entries were deleted in one atomic WriteBatch.  It looks like here they are in two separate WriteBatches.  Accurate?  Problematic?  What would our code do if it opened a database and found a name entry but no metadata or other entries?
&gt; 
&gt; A more theoretically-sound solution might be to add a LevelDBNoReadTransaction that is just a light wrapper around a write batch and leaves out the whole AVLTree stuff.  But if our open code would successfully handle a lone database name entry then that&apos;s probably overkill.

I talked about that option with alecflett@ actually, and I think I may do it just because it&apos;s safer and potentially re-usable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714768</commentid>
    <comment_count>6</comment_count>
      <attachid>162826</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-07 11:14:36 -0700</bug_when>
    <thetext>Created attachment 162826
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714773</commentid>
    <comment_count>7</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-07 11:16:20 -0700</bug_when>
    <thetext>Updated with a &quot;LevelDBWriteOnlyTransaction&quot; type.

Note that the iteration needed to be inlined as deleteRange() can&apos;t be re-used, since that would require adding createIterator() to the transaction that iterated the database not the transaction&apos;s contents, which seemed wrong for a WriteOnlyTransaction, or passing in an iterator to deleteRange() which seemed like overkill.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714883</commentid>
    <comment_count>8</comment_count>
      <attachid>162826</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-09-07 13:02:07 -0700</bug_when>
    <thetext>Comment on attachment 162826
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:363
&gt; +    RefPtr&lt;LevelDBWriteOnlyTransaction&gt; transaction = LevelDBWriteOnlyTransaction::create(m_db.get());

This could be an OwnPtr?  Though I suppose there&apos;s some value in being consistent with LevelDBTransaction.

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:378
&gt; +            transaction-&gt;rollback();

2. If remove returns void we can remove this rollback call.

&gt; Source/WebCore/platform/leveldb/LevelDBTransaction.cpp:505
&gt; +bool LevelDBWriteOnlyTransaction::put(const LevelDBSlice&amp; key, const Vector&lt;char&gt;&amp; value)

I&apos;d say remove this until we use it.

&gt; Source/WebCore/platform/leveldb/LevelDBTransaction.cpp:512
&gt; +bool LevelDBWriteOnlyTransaction::remove(const LevelDBSlice&amp; key)

1. Should this just return void if it always returns true?

&gt; Source/WebCore/platform/leveldb/LevelDBTransaction.cpp:531
&gt; +void LevelDBWriteOnlyTransaction::rollback()

3. If we never call this, should we remove it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714966</commentid>
    <comment_count>9</comment_count>
      <attachid>162826</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-07 14:16:15 -0700</bug_when>
    <thetext>Comment on attachment 162826
Patch

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

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:363
&gt;&gt; +    RefPtr&lt;LevelDBWriteOnlyTransaction&gt; transaction = LevelDBWriteOnlyTransaction::create(m_db.get());
&gt; 
&gt; This could be an OwnPtr?  Though I suppose there&apos;s some value in being consistent with LevelDBTransaction.

Yeah, I was aiming for consistency.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:378
&gt;&gt; +            transaction-&gt;rollback();
&gt; 
&gt; 2. If remove returns void we can remove this rollback call.

... which is why I remove() return bool. it turns out LevelDBTransaction&apos;s remove() will only ever return true as well.

&gt;&gt; Source/WebCore/platform/leveldb/LevelDBTransaction.cpp:505
&gt;&gt; +bool LevelDBWriteOnlyTransaction::put(const LevelDBSlice&amp; key, const Vector&lt;char&gt;&amp; value)
&gt; 
&gt; I&apos;d say remove this until we use it.

Will do.

&gt;&gt; Source/WebCore/platform/leveldb/LevelDBTransaction.cpp:531
&gt;&gt; +void LevelDBWriteOnlyTransaction::rollback()
&gt; 
&gt; 3. If we never call this, should we remove it?

Might as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716595</commentid>
    <comment_count>10</comment_count>
      <attachid>163227</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-10 15:23:20 -0700</bug_when>
    <thetext>Created attachment 163227
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716599</commentid>
    <comment_count>11</comment_count>
      <attachid>163227</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-10 15:24:58 -0700</bug_when>
    <thetext>Comment on attachment 163227
Patch

dgrogan@ - all feedback incorporated. Please take another look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716628</commentid>
    <comment_count>12</comment_count>
      <attachid>163227</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-09-10 15:56:48 -0700</bug_when>
    <thetext>Comment on attachment 163227
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716629</commentid>
    <comment_count>13</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-10 15:57:30 -0700</bug_when>
    <thetext>tony@ - r? cq?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716642</commentid>
    <comment_count>14</comment_count>
      <attachid>163227</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-10 16:15:38 -0700</bug_when>
    <thetext>Comment on attachment 163227
Patch

You could write a perf test for this.  See the PerformanceTests directory for examples of existing tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716734</commentid>
    <comment_count>15</comment_count>
      <attachid>163227</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-10 17:50:12 -0700</bug_when>
    <thetext>Comment on attachment 163227
Patch

Clearing flags on attachment: 163227

Committed r128136: &lt;http://trac.webkit.org/changeset/128136&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716735</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-10 17:50:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162616</attachid>
            <date>2012-09-06 16:26:00 -0700</date>
            <delta_ts>2012-09-07 11:14:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96036-20120906162540.patch</filename>
            <type>text/plain</type>
            <size>5175</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc3NjFkMGY5MGUzZDRj
MWJjMmY4NDc0MTZmZDVlODdjYmI5OWI4Zi4uOTgwNWYyYzdlNTNkNWMwY2U2YThjMGNlMGRkOTdh
MjYyZWViNzRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA5LTA2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJREJG
YWN0b3J5LmRlbGV0ZURhdGFiYXNlKCkgaXMgc2xvdworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYwMzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZGVsZXRlRGF0YWJhc2UoKSBvcGVyYXRpb24gaXMg
aW1wbGVtZW50ZWQgYnkgY3JlYXRpbmcgYSBMZXZlbERCVGFuc2FjdGlvbiB0byBhY2N1bXVsYXRl
CisgICAgICAgIHRoZSByZWNvcmRzIHRvIGRlbGV0ZSwgdGhlbiBjb21taXR0aW5nIGl0LiBUaGUg
dHJhbnNhY3Rpb24gaXMgYSB0cmVlIG9mIGtleS9vcGVyYXRpb24gcGFpcnMuCisgICAgICAgIEFz
IGVhY2ggKGtleSwgZGVsZXRlKSBlbnRyeSBpcyBhZGRlZCB0byB0aGUgdHJlZSBjb21wYXJlcyBu
ZWVkIHRvIGJlIG1hZGUsIHBvdGVudGlhbGx5CisgICAgICAgIHJlcXVpcmluZyBmdWxsIGtleSBk
ZWNvZGVzLiBTaW5jZSB0aGlzIHRlbXBvcmFyeSB0cmFuc2FjdGlvbiBpcyBuZXZlciByZWFkIGZy
b20sIHRoaXMgaXMKKyAgICAgICAgb3ZlcmtpbGwuCisKKyAgICAgICAgSW5zdGVhZCwgZXhwb3Nl
IGEgbmV3IExldmVsREI6OnJlbW92ZVJhbmdlKCkgbWV0aG9kIHRoYXQgb25seSBjcmVhdGVzIGEg
TGV2ZWxEQldyaXRlQmF0Y2guCisgICAgICAgIFRoaXMgaXMgbGlnaHRlciB3ZWlnaHQgdGhhbiBh
IExldmVsREJUcmFuc2FjdGlvbiwgaGFzIHRyYW5zYWN0aW9uYWwgaW50ZWdyaXR5LCBhbmQgYXBw
ZWFycworICAgICAgICBmYXN0ZXIgdGhhbiBjYWxsaW5nIGludG8gbGV2ZWxkYiB0byByZW1vdmUg
ZWFjaCBpbmRpdmlkdWFsIHJlY29yZCBkaXJlY3RseS4KKworICAgICAgICBObyBuZXcgdGVzdHMg
LSBubyBmdW5jdGlvbmFsIGNoYW5nZXMsIG9ubHkgcGVyZiBpbXByb3ZlbWVudC4KKworICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlRGF0YWJhc2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxldmVsREJEYXRhYmFzZTo6cmVtb3ZlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaDoKKyAgICAgICAg
KExldmVsREJEYXRhYmFzZSk6CisKIDIwMTItMDktMDMgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBQYXJ0IDEgb2YgcmVtb3ZpbmcgUGxhdGZvcm1TdHJpbmcuaCwgbW92
ZSByZW1haW5pbmcgZnVuY3Rpb25zIHRvIG5ldyBob21lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcApp
bmRleCAwNGE0ZmJiYTI1MDMwN2FlYzQ1YmZhNzkzOTQ1MmE2ZWVjNWRhM2EwLi42YzdmZDEwMzg2
ODUzMmJmMDM4Y2E4YTVhMTllNzhhYWVhNjMwYjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcApA
QCAtMzYwLDI3ICszNjAsMjIgQEAgc3RhdGljIGJvb2wgZGVsZXRlUmFuZ2UoTGV2ZWxEQlRyYW5z
YWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3QgVmVjdG9yPGNoYXI+JiBiZWcKIGJvb2wgSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lKQogewog
ICAgIElEQl9UUkFDRSgiSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlRGF0YWJhc2UiKTsK
LSAgICBSZWZQdHI8TGV2ZWxEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9IExldmVsREJUcmFu
c2FjdGlvbjo6Y3JlYXRlKG1fZGIuZ2V0KCkpOwogCiAgICAgaW50NjRfdCBkYXRhYmFzZUlkOwog
ICAgIFN0cmluZyB2ZXJzaW9uOwogICAgIGludDY0X3QgaW50VmVyc2lvbjsKICAgICBpZiAoIWdl
dElEQkRhdGFiYXNlTWV0YURhdGEobmFtZSwgdmVyc2lvbiwgaW50VmVyc2lvbiwgZGF0YWJhc2VJ
ZCkpIHsKLSAgICAgICAgdHJhbnNhY3Rpb24tPnJvbGxiYWNrKCk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdGFydEtleSA9IERhdGFiYXNl
TWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpPcmln
aW5OYW1lKTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RvcEtleSA9IERhdGFiYXNlTWV0YURh
dGFLZXk6OmVuY29kZShkYXRhYmFzZUlkICsgMSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6T3JpZ2lu
TmFtZSk7Ci0gICAgaWYgKCFkZWxldGVSYW5nZSh0cmFuc2FjdGlvbi5nZXQoKSwgc3RhcnRLZXks
IHN0b3BLZXkpKSB7Ci0gICAgICAgIHRyYW5zYWN0aW9uLT5yb2xsYmFjaygpOworICAgIGlmICgh
bV9kYi0+cmVtb3ZlUmFuZ2Uoc3RhcnRLZXksIHN0b3BLZXkpKSB7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5ID0gRGF0YWJhc2VOYW1l
S2V5OjplbmNvZGUobV9pZGVudGlmaWVyLCBuYW1lKTsKLSAgICB0cmFuc2FjdGlvbi0+cmVtb3Zl
KGtleSk7Ci0KLSAgICByZXR1cm4gdHJhbnNhY3Rpb24tPmNvbW1pdCgpOworICAgIHJldHVybiBt
X2RiLT5yZW1vdmUoa2V5KTsKIH0KIAogc3RhdGljIGJvb2wgY2hlY2tPYmplY3RTdG9yZUFuZE1l
dGFEYXRhVHlwZShjb25zdCBMZXZlbERCSXRlcmF0b3IqIGl0LCBjb25zdCBWZWN0b3I8Y2hhcj4m
IHN0b3BLZXksIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBtZXRhRGF0YVR5cGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5j
cHAKaW5kZXggMjczYWZkNGRlYzFhYWU3MGJkMWFhOTJiMDhlNjgwNGJiMjYzMDhjMi4uNjEzZDE1
YTc4MjhjYjE0NGM2MDY3ODZiYmJkNDljOTY0NjhiMWIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmNwcApAQCAtMTg3LDYgKzE4
NywyMyBAQCBib29sIExldmVsREJEYXRhYmFzZTo6cmVtb3ZlKGNvbnN0IExldmVsREJTbGljZSYg
a2V5KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBMZXZlbERCRGF0YWJhc2U6OnJlbW92
ZVJhbmdlKGNvbnN0IExldmVsREJTbGljZSYgc3RhcnQsIGNvbnN0IExldmVsREJTbGljZSYgbGlt
aXQpCit7CisKKyAgICBPd25QdHI8TGV2ZWxEQkl0ZXJhdG9yPiBpdCA9IGNyZWF0ZUl0ZXJhdG9y
KCk7CisgICAgT3duUHRyPExldmVsREJXcml0ZUJhdGNoPiB3cml0ZUJhdGNoID0gTGV2ZWxEQldy
aXRlQmF0Y2g6OmNyZWF0ZSgpOworICAgIGZvciAoaXQtPnNlZWsoc3RhcnQpOyBpdC0+aXNWYWxp
ZCgpICYmIG1fY29tcGFyYXRvci0+Y29tcGFyZShpdC0+a2V5KCksIGxpbWl0KSA8IDA7IGl0LT5u
ZXh0KCkpCisgICAgICAgIHdyaXRlQmF0Y2gtPnJlbW92ZShpdC0+a2V5KCkpOworCisgICAgbGV2
ZWxkYjo6V3JpdGVPcHRpb25zIHdyaXRlT3B0aW9uczsKKyAgICB3cml0ZU9wdGlvbnMuc3luYyA9
IHRydWU7CisgICAgY29uc3QgbGV2ZWxkYjo6U3RhdHVzIHMgPSBtX2RiLT5Xcml0ZSh3cml0ZU9w
dGlvbnMsIHdyaXRlQmF0Y2gtPm1fd3JpdGVCYXRjaC5nZXQoKSk7CisgICAgaWYgKHMub2soKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgTE9HX0VSUk9SKCJMZXZlbERCIHdyaXRlIGZhaWxl
ZDogJXMiLCBzLlRvU3RyaW5nKCkuY19zdHIoKSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBi
b29sIExldmVsREJEYXRhYmFzZTo6Z2V0KGNvbnN0IExldmVsREJTbGljZSYga2V5LCBWZWN0b3I8
Y2hhcj4mIHZhbHVlKQogewogICAgIHN0ZDo6c3RyaW5nIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5oCmluZGV4IGU4MGI0OWEy
NGFjNzdkMmZjMDNmMTBhZTNiMGRiNzBmMzZhMjY3NjkuLjdmZWM3ZTYzNmVkZTM5ZWE2N2Q5MGFi
MGRkNWYzMzZhYTMxNzU4YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xl
dmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2
ZWxkYi9MZXZlbERCRGF0YWJhc2UuaApAQCAtNTUsNiArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBi
b29sIHB1dChjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgY29uc3QgVmVjdG9yPGNoYXI+JiB2YWx1
ZSk7CiAgICAgYm9vbCByZW1vdmUoY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXkpOworICAgIGJvb2wg
cmVtb3ZlUmFuZ2UoY29uc3QgTGV2ZWxEQlNsaWNlJiBzdGFydCwgY29uc3QgTGV2ZWxEQlNsaWNl
JiBsaW1pdCk7CiAgICAgYm9vbCBnZXQoY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIFZlY3Rvcjxj
aGFyPiYgdmFsdWUpOwogICAgIGJvb2wgd3JpdGUoTGV2ZWxEQldyaXRlQmF0Y2gmKTsKICAgICBQ
YXNzT3duUHRyPExldmVsREJJdGVyYXRvcj4gY3JlYXRlSXRlcmF0b3IoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162826</attachid>
            <date>2012-09-07 11:14:36 -0700</date>
            <delta_ts>2012-09-10 15:23:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96036-20120907111415.patch</filename>
            <type>text/plain</type>
            <size>6425</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc3NjFkMGY5MGUzZDRj
MWJjMmY4NDc0MTZmZDVlODdjYmI5OWI4Zi4uMzBkMmI3YzQ1ZWJhZDExOWE3NGQwNmUzYmQyYzBi
ODYxOTllMmJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA5LTA3ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJREJG
YWN0b3J5LmRlbGV0ZURhdGFiYXNlKCkgaXMgc2xvdworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYwMzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZGVsZXRlRGF0YWJhc2UoKSBvcGVyYXRpb24gaXMg
aW1wbGVtZW50ZWQgYnkgY3JlYXRpbmcgYSBMZXZlbERCVGFuc2FjdGlvbiB0byBhY2N1bXVsYXRl
CisgICAgICAgIHRoZSByZWNvcmRzIHRvIGRlbGV0ZSwgdGhlbiBjb21taXR0aW5nIGl0LiBUaGUg
dHJhbnNhY3Rpb24gaXMgYSB0cmVlIG9mIGtleS9vcGVyYXRpb24gcGFpcnMuCisgICAgICAgIEFz
IGVhY2ggKGtleSwgZGVsZXRlKSBlbnRyeSBpcyBhZGRlZCB0byB0aGUgdHJlZSBjb21wYXJlcyBu
ZWVkIHRvIGJlIG1hZGUsIHBvdGVudGlhbGx5CisgICAgICAgIHJlcXVpcmluZyBmdWxsIGtleSBk
ZWNvZGVzLiBTaW5jZSB0aGlzIHRlbXBvcmFyeSB0cmFuc2FjdGlvbiBpcyBuZXZlciByZWFkIGZy
b20sIHRoaXMgaXMKKyAgICAgICAgb3ZlcmtpbGwuCisKKyAgICAgICAgQWRkIGEgbmV3ICJ3cml0
ZSBvbmx5IiB0cmFuc2FjdGlvbiB0eXBlIHRoYXQgc2ltcGx5IHdyYXBzIGEgd3JpdGUgYmF0Y2gs
IHdoaWNoIHByb3ZpZGVzCisgICAgICAgIHRyYW5zYWN0aW9uIGludGVncml0eSBidXQgYXZvaWRz
IHRoZSBpbnNlcnRpb24gb3ZlcmhlYWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC0gbm8gZnVu
Y3Rpb25hbCBjaGFuZ2VzLCBvbmx5IHBlcmYgaW1wcm92ZW1lbnQuCisKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0ZURhdGFiYXNlKTogVXNlIG5ldyB3cml0
ZS1vbmx5IHRyYW5zYWN0aW9uIHR5cGUuCisgICAgICAgICogcGxhdGZvcm0vbGV2ZWxkYi9MZXZl
bERCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQldyaXRlT25seVRy
YW5zYWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMZXZlbERCV3JpdGVPbmx5VHJhbnNhY3Rpb246OkxldmVsREJXcml0ZU9ubHlUcmFuc2FjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpMZXZlbERCV3JpdGVPbmx5VHJhbnNhY3Rpb246On5MZXZl
bERCV3JpdGVPbmx5VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQldyaXRl
T25seVRyYW5zYWN0aW9uOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQldyaXRlT25s
eVRyYW5zYWN0aW9uOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQldyaXRlT25s
eVRyYW5zYWN0aW9uOjpjb21taXQpOgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQldyaXRlT25s
eVRyYW5zYWN0aW9uOjpyb2xsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vbGV2ZWxkYi9MZXZl
bERCVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTGV2ZWxEQldy
aXRlT25seVRyYW5zYWN0aW9uKToKKwogMjAxMi0wOS0wMyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFBhcnQgMSBvZiByZW1vdmluZyBQbGF0Zm9ybVN0cmluZy5oLCBt
b3ZlIHJlbWFpbmluZyBmdW5jdGlvbnMgdG8gbmV3IGhvbWVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3Bw
CmluZGV4IDA0YTRmYmJhMjUwMzA3YWVjNDViZmE3OTM5NDUyYTZlZWM1ZGEzYTAuLmQ1NjIxYjVh
NzkwOWRmZWM1ODk5YzkwYWYzNmY0ZWNhYzEwNjg3ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3Bw
CkBAIC0zNjAsNyArMzYwLDcgQEAgc3RhdGljIGJvb2wgZGVsZXRlUmFuZ2UoTGV2ZWxEQlRyYW5z
YWN0aW9uKiB0cmFuc2FjdGlvbiwgY29uc3QgVmVjdG9yPGNoYXI+JiBiZWcKIGJvb2wgSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lKQogewog
ICAgIElEQl9UUkFDRSgiSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlRGF0YWJhc2UiKTsK
LSAgICBSZWZQdHI8TGV2ZWxEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9IExldmVsREJUcmFu
c2FjdGlvbjo6Y3JlYXRlKG1fZGIuZ2V0KCkpOworICAgIFJlZlB0cjxMZXZlbERCV3JpdGVPbmx5
VHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gTGV2ZWxEQldyaXRlT25seVRyYW5zYWN0aW9uOjpj
cmVhdGUobV9kYi5nZXQoKSk7CiAKICAgICBpbnQ2NF90IGRhdGFiYXNlSWQ7CiAgICAgU3RyaW5n
IHZlcnNpb247CkBAIC0zNzIsOSArMzcyLDEyIEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZTo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lKQogCiAgICAgY29uc3QgVmVjdG9y
PGNoYXI+IHN0YXJ0S2V5ID0gRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQs
IERhdGFiYXNlTWV0YURhdGFLZXk6Ok9yaWdpbk5hbWUpOwogICAgIGNvbnN0IFZlY3RvcjxjaGFy
PiBzdG9wS2V5ID0gRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQgKyAxLCBE
YXRhYmFzZU1ldGFEYXRhS2V5OjpPcmlnaW5OYW1lKTsKLSAgICBpZiAoIWRlbGV0ZVJhbmdlKHRy
YW5zYWN0aW9uLmdldCgpLCBzdGFydEtleSwgc3RvcEtleSkpIHsKLSAgICAgICAgdHJhbnNhY3Rp
b24tPnJvbGxiYWNrKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBPd25QdHI8TGV2ZWxE
Qkl0ZXJhdG9yPiBpdCA9IG1fZGItPmNyZWF0ZUl0ZXJhdG9yKCk7CisgICAgZm9yIChpdC0+c2Vl
ayhzdGFydEtleSk7IGl0LT5pc1ZhbGlkKCkgJiYgY29tcGFyZUtleXMoaXQtPmtleSgpLCBzdG9w
S2V5KSA8IDA7IGl0LT5uZXh0KCkpIHsKKyAgICAgICAgaWYgKCF0cmFuc2FjdGlvbi0+cmVtb3Zl
KGl0LT5rZXkoKSkpIHsKKyAgICAgICAgICAgIHRyYW5zYWN0aW9uLT5yb2xsYmFjaygpOworICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgfQogCiAgICAgY29uc3QgVmVj
dG9yPGNoYXI+IGtleSA9IERhdGFiYXNlTmFtZUtleTo6ZW5jb2RlKG1faWRlbnRpZmllciwgbmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJU
cmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJU
cmFuc2FjdGlvbi5jcHAKaW5kZXggODYyYTVmYmZiYmQ1YWVkOWE4ZTg3NWZkY2FmM2YzMTgxMmRm
MGFmNi4uODhkMmRiNTBkMGEyYjE4MTQ2MzNjZTZjYjVhMzU5MzJlMTcwMjJiOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9u
LmNwcApAQCAtNDg1LDYgKzQ4NSw1NiBAQCB2b2lkIExldmVsREJUcmFuc2FjdGlvbjo6bm90aWZ5
SXRlcmF0b3JzT2ZUcmVlQ2hhbmdlKCkKICAgICB9CiB9CiAKK1Bhc3NSZWZQdHI8TGV2ZWxEQldy
aXRlT25seVRyYW5zYWN0aW9uPiBMZXZlbERCV3JpdGVPbmx5VHJhbnNhY3Rpb246OmNyZWF0ZShM
ZXZlbERCRGF0YWJhc2UqIGRiKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTGV2ZWxEQldy
aXRlT25seVRyYW5zYWN0aW9uKGRiKSk7Cit9CisKK0xldmVsREJXcml0ZU9ubHlUcmFuc2FjdGlv
bjo6TGV2ZWxEQldyaXRlT25seVRyYW5zYWN0aW9uKExldmVsREJEYXRhYmFzZSogZGIpCisgICAg
OiBtX2RiKGRiKQorICAgICwgbV93cml0ZUJhdGNoKExldmVsREJXcml0ZUJhdGNoOjpjcmVhdGUo
KSkKKyAgICAsIG1fZmluaXNoZWQoZmFsc2UpCit7Cit9CisKK0xldmVsREJXcml0ZU9ubHlUcmFu
c2FjdGlvbjo6fkxldmVsREJXcml0ZU9ubHlUcmFuc2FjdGlvbigpCit7CisgICAgbV93cml0ZUJh
dGNoLT5jbGVhcigpOworfQorCitib29sIExldmVsREJXcml0ZU9ubHlUcmFuc2FjdGlvbjo6cHV0
KGNvbnN0IExldmVsREJTbGljZSYga2V5LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHZhbHVlKQorewor
ICAgIEFTU0VSVCghbV9maW5pc2hlZCk7CisgICAgbV93cml0ZUJhdGNoLT5wdXQoa2V5LCB2YWx1
ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTGV2ZWxEQldyaXRlT25seVRyYW5zYWN0
aW9uOjpyZW1vdmUoY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXkpCit7CisgICAgQVNTRVJUKCFtX2Zp
bmlzaGVkKTsKKyAgICBtX3dyaXRlQmF0Y2gtPnJlbW92ZShrZXkpOworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIExldmVsREJXcml0ZU9ubHlUcmFuc2FjdGlvbjo6Y29tbWl0KCkKK3sKKyAg
ICBBU1NFUlQoIW1fZmluaXNoZWQpOworCisgICAgaWYgKCFtX2RiLT53cml0ZSgqbV93cml0ZUJh
dGNoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9maW5pc2hlZCA9IHRydWU7Cisg
ICAgbV93cml0ZUJhdGNoLT5jbGVhcigpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIExl
dmVsREJXcml0ZU9ubHlUcmFuc2FjdGlvbjo6cm9sbGJhY2soKQoreworICAgIEFTU0VSVCghbV9m
aW5pc2hlZCk7CisgICAgbV9maW5pc2hlZCA9IHRydWU7CisgICAgbV93cml0ZUJhdGNoLT5jbGVh
cigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoTEVWRUxE
QikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRy
YW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFu
c2FjdGlvbi5oCmluZGV4IDZkMjI4NTBjMmI3YThjMjgwZTM5YzY3NDkzOGI3OTY4ZTc0YjNkZDMu
LmRlOTNhMDU5ZDMzNjFlOWJiN2Q1NTYzMTkyNzYzZDEyNTExYzAyMWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uaApAQCAt
NDMsNiArNDMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBMZXZlbERCRGF0YWJh
c2U7CitjbGFzcyBMZXZlbERCV3JpdGVCYXRjaDsKIAogdXNpbmcgV1RGOjpBVkxUcmVlOwogCkBA
IC0xNjksNiArMTcwLDI2IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxUcmFuc2FjdGlvbkl0ZXJh
dG9yKj4gbV9pdGVyYXRvcnM7CiB9OwogCitjbGFzcyBMZXZlbERCV3JpdGVPbmx5VHJhbnNhY3Rp
b24gOiBwdWJsaWMgUmVmQ291bnRlZDxMZXZlbERCV3JpdGVPbmx5VHJhbnNhY3Rpb24+IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxMZXZlbERCV3JpdGVPbmx5VHJhbnNhY3Rpb24+
IGNyZWF0ZShMZXZlbERCRGF0YWJhc2UqKTsKKworICAgIH5MZXZlbERCV3JpdGVPbmx5VHJhbnNh
Y3Rpb24oKTsKKyAgICBib29sIHB1dChjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgY29uc3QgVmVj
dG9yPGNoYXI+JiB2YWx1ZSk7CisgICAgYm9vbCByZW1vdmUoY29uc3QgTGV2ZWxEQlNsaWNlJiBr
ZXkpOworICAgIGJvb2wgY29tbWl0KCk7CisgICAgdm9pZCByb2xsYmFjaygpOworCitwcml2YXRl
OgorICAgIExldmVsREJXcml0ZU9ubHlUcmFuc2FjdGlvbihMZXZlbERCRGF0YWJhc2UqKTsKKwor
ICAgIGJvb2wgc2V0KGNvbnN0IExldmVsREJTbGljZSYga2V5LCBjb25zdCBWZWN0b3I8Y2hhcj4m
IHZhbHVlLCBib29sIGRlbGV0ZWQpOworCisgICAgTGV2ZWxEQkRhdGFiYXNlKiBtX2RiOworICAg
IE93blB0cjxMZXZlbERCV3JpdGVCYXRjaD4gbV93cml0ZUJhdGNoOworICAgIGJvb2wgbV9maW5p
c2hlZDsKK307CisKIH0KIAogI2VuZGlmIC8vIFVTRShMRVZFTERCKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163227</attachid>
            <date>2012-09-10 15:23:20 -0700</date>
            <delta_ts>2012-09-10 17:50:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96036-20120910152256.patch</filename>
            <type>text/plain</type>
            <size>5869</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWNhZTY2ZjExM2ExZjk5
NWQxY2NiMDY4YzY2YjViOTQwMTY5NjI4OC4uNjc1OTA4MGIxNjYxN2EzNDkzOGEwNmQ3OTg3NTdi
Yjk4MmIxM2RmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA5LTA3ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJREJG
YWN0b3J5LmRlbGV0ZURhdGFiYXNlKCkgaXMgc2xvdworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYwMzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZGVsZXRlRGF0YWJhc2UoKSBvcGVyYXRpb24gaXMg
aW1wbGVtZW50ZWQgYnkgY3JlYXRpbmcgYSBMZXZlbERCVGFuc2FjdGlvbiB0byBhY2N1bXVsYXRl
CisgICAgICAgIHRoZSByZWNvcmRzIHRvIGRlbGV0ZSwgdGhlbiBjb21taXR0aW5nIGl0LiBUaGUg
dHJhbnNhY3Rpb24gaXMgYSB0cmVlIG9mIGtleS9vcGVyYXRpb24gcGFpcnMuCisgICAgICAgIEFz
IGVhY2ggKGtleSwgZGVsZXRlKSBlbnRyeSBpcyBhZGRlZCB0byB0aGUgdHJlZSBjb21wYXJlcyBu
ZWVkIHRvIGJlIG1hZGUsIHBvdGVudGlhbGx5CisgICAgICAgIHJlcXVpcmluZyBmdWxsIGtleSBk
ZWNvZGVzLiBTaW5jZSB0aGlzIHRlbXBvcmFyeSB0cmFuc2FjdGlvbiBpcyBuZXZlciByZWFkIGZy
b20sIHRoaXMgaXMKKyAgICAgICAgb3ZlcmtpbGwuCisKKyAgICAgICAgQWRkIGEgbmV3ICJ3cml0
ZSBvbmx5IiB0cmFuc2FjdGlvbiB0eXBlIHRoYXQgc2ltcGx5IHdyYXBzIGEgd3JpdGUgYmF0Y2gs
IHdoaWNoIHByb3ZpZGVzCisgICAgICAgIHRyYW5zYWN0aW9uIGludGVncml0eSBidXQgYXZvaWRz
IHRoZSBpbnNlcnRpb24gb3ZlcmhlYWQgYW5kIGhhcyBhIG1pbmltYWwgaW50ZXJmYWNlLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cyAtIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcywgb25seSBwZXJmIGlt
cHJvdmVtZW50LgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpk
ZWxldGVEYXRhYmFzZSk6IFVzZSBuZXcgd3JpdGUtb25seSB0cmFuc2FjdGlvbiB0eXBlLgorICAg
ICAgICAqIHBsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxldmVsREJXcml0ZU9ubHlUcmFuc2FjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQldyaXRlT25seVRyYW5zYWN0aW9u
OjpMZXZlbERCV3JpdGVPbmx5VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxE
QldyaXRlT25seVRyYW5zYWN0aW9uOjp+TGV2ZWxEQldyaXRlT25seVRyYW5zYWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxldmVsREJXcml0ZU9ubHlUcmFuc2FjdGlvbjo6cmVtb3ZlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxldmVsREJXcml0ZU9ubHlUcmFuc2FjdGlvbjo6Y29tbWl0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChMZXZlbERCV3JpdGVPbmx5VHJhbnNhY3Rpb24pOgorCiAyMDEy
LTA5LTA5ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAg
IEFkZCBTdHJpbmdCdWlsZGVyOjphcHBlbmROdW1iZXIoKSBhbmQgdXNlIGl0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5n
U3RvcmUuY3BwCmluZGV4IDE1YmU4OTYxMGNhZmNmMTIyY2UzMDFmMDg5MTljYWY3M2YxMmVkNjMu
LmRjZGVlY2QwMDJlYjJkYmI1ODU1MmI2YTRiYTJkOTFhZTE2NDFkZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5n
U3RvcmUuY3BwCkBAIC0zNzIsMjIgKzM3MiwxOSBAQCBzdGF0aWMgYm9vbCBkZWxldGVSYW5nZShM
ZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGJlZwog
Ym9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcm
IG5hbWUpCiB7CiAgICAgSURCX1RSQUNFKCJJREJMZXZlbERCQmFja2luZ1N0b3JlOjpkZWxldGVE
YXRhYmFzZSIpOwotICAgIFJlZlB0cjxMZXZlbERCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0g
TGV2ZWxEQlRyYW5zYWN0aW9uOjpjcmVhdGUobV9kYi5nZXQoKSk7CisgICAgT3duUHRyPExldmVs
REJXcml0ZU9ubHlUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24gPSBMZXZlbERCV3JpdGVPbmx5VHJh
bnNhY3Rpb246OmNyZWF0ZShtX2RiLmdldCgpKTsKIAogICAgIGludDY0X3QgZGF0YWJhc2VJZDsK
ICAgICBTdHJpbmcgdmVyc2lvbjsKICAgICBpbnQ2NF90IGludFZlcnNpb247Ci0gICAgaWYgKCFn
ZXRJREJEYXRhYmFzZU1ldGFEYXRhKG5hbWUsIHZlcnNpb24sIGludFZlcnNpb24sIGRhdGFiYXNl
SWQpKSB7Ci0gICAgICAgIHRyYW5zYWN0aW9uLT5yb2xsYmFjaygpOworICAgIGlmICghZ2V0SURC
RGF0YWJhc2VNZXRhRGF0YShuYW1lLCB2ZXJzaW9uLCBpbnRWZXJzaW9uLCBkYXRhYmFzZUlkKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQogCiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0
YXJ0S2V5ID0gRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIERhdGFiYXNl
TWV0YURhdGFLZXk6Ok9yaWdpbk5hbWUpOwogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdG9wS2V5
ID0gRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQgKyAxLCBEYXRhYmFzZU1l
dGFEYXRhS2V5OjpPcmlnaW5OYW1lKTsKLSAgICBpZiAoIWRlbGV0ZVJhbmdlKHRyYW5zYWN0aW9u
LmdldCgpLCBzdGFydEtleSwgc3RvcEtleSkpIHsKLSAgICAgICAgdHJhbnNhY3Rpb24tPnJvbGxi
YWNrKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAgT3duUHRyPExldmVsREJJ
dGVyYXRvcj4gaXQgPSBtX2RiLT5jcmVhdGVJdGVyYXRvcigpOworICAgIGZvciAoaXQtPnNlZWso
c3RhcnRLZXkpOyBpdC0+aXNWYWxpZCgpICYmIGNvbXBhcmVLZXlzKGl0LT5rZXkoKSwgc3RvcEtl
eSkgPCAwOyBpdC0+bmV4dCgpKQorICAgICAgICB0cmFuc2FjdGlvbi0+cmVtb3ZlKGl0LT5rZXko
KSk7CiAKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5ID0gRGF0YWJhc2VOYW1lS2V5OjplbmNv
ZGUobV9pZGVudGlmaWVyLCBuYW1lKTsKICAgICB0cmFuc2FjdGlvbi0+cmVtb3ZlKGtleSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2Fj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2Fj
dGlvbi5jcHAKaW5kZXggODYyYTVmYmZiYmQ1YWVkOWE4ZTg3NWZkY2FmM2YzMTgxMmRmMGFmNi4u
MjY1ODBjMjEwYWZmNzcxNzViODY2NjQ5YjY4ZDY5YWE1YTUyNmM2NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmNwcApA
QCAtNDg1LDYgKzQ4NSw0MSBAQCB2b2lkIExldmVsREJUcmFuc2FjdGlvbjo6bm90aWZ5SXRlcmF0
b3JzT2ZUcmVlQ2hhbmdlKCkKICAgICB9CiB9CiAKK1Bhc3NPd25QdHI8TGV2ZWxEQldyaXRlT25s
eVRyYW5zYWN0aW9uPiBMZXZlbERCV3JpdGVPbmx5VHJhbnNhY3Rpb246OmNyZWF0ZShMZXZlbERC
RGF0YWJhc2UqIGRiKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgTGV2ZWxEQldyaXRlT25s
eVRyYW5zYWN0aW9uKGRiKSk7Cit9CisKK0xldmVsREJXcml0ZU9ubHlUcmFuc2FjdGlvbjo6TGV2
ZWxEQldyaXRlT25seVRyYW5zYWN0aW9uKExldmVsREJEYXRhYmFzZSogZGIpCisgICAgOiBtX2Ri
KGRiKQorICAgICwgbV93cml0ZUJhdGNoKExldmVsREJXcml0ZUJhdGNoOjpjcmVhdGUoKSkKKyAg
ICAsIG1fZmluaXNoZWQoZmFsc2UpCit7Cit9CisKK0xldmVsREJXcml0ZU9ubHlUcmFuc2FjdGlv
bjo6fkxldmVsREJXcml0ZU9ubHlUcmFuc2FjdGlvbigpCit7CisgICAgbV93cml0ZUJhdGNoLT5j
bGVhcigpOworfQorCit2b2lkIExldmVsREJXcml0ZU9ubHlUcmFuc2FjdGlvbjo6cmVtb3ZlKGNv
bnN0IExldmVsREJTbGljZSYga2V5KQoreworICAgIEFTU0VSVCghbV9maW5pc2hlZCk7CisgICAg
bV93cml0ZUJhdGNoLT5yZW1vdmUoa2V5KTsKK30KKworYm9vbCBMZXZlbERCV3JpdGVPbmx5VHJh
bnNhY3Rpb246OmNvbW1pdCgpCit7CisgICAgQVNTRVJUKCFtX2ZpbmlzaGVkKTsKKworICAgIGlm
ICghbV9kYi0+d3JpdGUoKm1fd3JpdGVCYXRjaCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIG1fZmluaXNoZWQgPSB0cnVlOworICAgIG1fd3JpdGVCYXRjaC0+Y2xlYXIoKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNF
KExFVkVMREIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xl
dmVsREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZl
bERCVHJhbnNhY3Rpb24uaAppbmRleCA2ZDIyODUwYzJiN2E4YzI4MGUzOWM2NzQ5MzhiNzk2OGU3
NGIzZGQzLi44MGEzMzVkNDdhMDEwYWY0ZDM4MmE1ZjE1YTE5NDU5MTczNzQ0ZjVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9u
LmgKQEAgLTQzLDYgKzQzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTGV2ZWxE
QkRhdGFiYXNlOworY2xhc3MgTGV2ZWxEQldyaXRlQmF0Y2g7CiAKIHVzaW5nIFdURjo6QVZMVHJl
ZTsKIApAQCAtMTY5LDYgKzE3MCwyMiBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8VHJhbnNhY3Rp
b25JdGVyYXRvcio+IG1faXRlcmF0b3JzOwogfTsKIAorY2xhc3MgTGV2ZWxEQldyaXRlT25seVRy
YW5zYWN0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxMZXZlbERCV3JpdGVP
bmx5VHJhbnNhY3Rpb24+IGNyZWF0ZShMZXZlbERCRGF0YWJhc2UqKTsKKworICAgIH5MZXZlbERC
V3JpdGVPbmx5VHJhbnNhY3Rpb24oKTsKKyAgICB2b2lkIHJlbW92ZShjb25zdCBMZXZlbERCU2xp
Y2UmIGtleSk7CisgICAgYm9vbCBjb21taXQoKTsKKworcHJpdmF0ZToKKyAgICBMZXZlbERCV3Jp
dGVPbmx5VHJhbnNhY3Rpb24oTGV2ZWxEQkRhdGFiYXNlKik7CisKKyAgICBMZXZlbERCRGF0YWJh
c2UqIG1fZGI7CisgICAgT3duUHRyPExldmVsREJXcml0ZUJhdGNoPiBtX3dyaXRlQmF0Y2g7Cisg
ICAgYm9vbCBtX2ZpbmlzaGVkOworfTsKKwogfQogCiAjZW5kaWYgLy8gVVNFKExFVkVMREIpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>