<?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>141923</bug_id>
          
          <creation_ts>2015-02-23 13:53:44 -0800</creation_ts>
          <short_desc>WTF::WeakPtr should have a &quot;forget&quot; method</short_desc>
          <delta_ts>2015-02-23 16:57:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          <blocked>141931</blocked>
    
    <blocked>141935</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1071315</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-02-23 13:53:44 -0800</bug_when>
    <thetext>Sometimes we need to be able to clear a WeakPtr. Currently, you do so using the default constructor:

    m_aWeakPointerToSomething = WeakPtr&lt;Something&gt;();

It would be nicer to be able to write:

    m_aWeakPointerToSomething.forget();

With the expectation that the WeakPtr would be &apos;null&apos; after calling &apos;forget&apos;.

It should reduce the weak pointer reference count by one on the object being pointed to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071335</commentid>
    <comment_count>1</comment_count>
      <attachid>247145</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-02-23 14:11:39 -0800</bug_when>
    <thetext>Created attachment 247145
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071346</commentid>
    <comment_count>2</comment_count>
      <attachid>247149</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-02-23 14:30:21 -0800</bug_when>
    <thetext>Created attachment 247149
Patch v2 (Fix test build error)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071349</commentid>
    <comment_count>3</comment_count>
      <attachid>247150</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-02-23 14:51:55 -0800</bug_when>
    <thetext>Created attachment 247150
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071353</commentid>
    <comment_count>4</comment_count>
      <attachid>247150</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-02-23 14:58:45 -0800</bug_when>
    <thetext>Comment on attachment 247150
Patch

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

&gt; Source/WTF/wtf/WeakPtr.h:106
&gt; +    void forget() { operator=(WeakPtr()); }

WeakPtrFactory seems to call this operation &quot;revoke&quot;. Might be nice to be consistent.

Also, we could just do a &quot;m_ref = WeakReference&lt;T&gt;::create(nullptr);&quot; to avoid calling copyRef() unnecessarily.

&gt; Tools/TestWebKitAPI/Tests/WTF/WeakPtr.cpp:127
&gt; +    WeakPtr&lt;int&gt; weakPtr2 = factory-&gt;createWeakPtr();

We need to try WeakPtr copying / assignment as this is the reason why we need to create a new WeakReference when revoking (instead of simply clearing m_ref).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071354</commentid>
    <comment_count>5</comment_count>
      <attachid>247150</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-02-23 15:00:27 -0800</bug_when>
    <thetext>Comment on attachment 247150
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WTF/WeakPtr.cpp:125
&gt; +    WeakPtrFactory&lt;int&gt;* factory = new WeakPtrFactory&lt;int&gt;(&amp;dummy);

nit: this could be stack-allocated. You could use a scope as you want to control life-time for your last checks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071364</commentid>
    <comment_count>6</comment_count>
      <attachid>247152</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-02-23 15:18:56 -0800</bug_when>
    <thetext>Created attachment 247152
Patch v4 (Incorporate cdumez comments)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071365</commentid>
    <comment_count>7</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-02-23 15:21:13 -0800</bug_when>
    <thetext>bfulgham-macpro:Tools bfulgham$ ../WebKitBuild/Debug/TestWebKitAPI --gtest_filter=&quot;WTF_Weak*&quot;
**PASS** WTF_WeakPtr.Basic
**PASS** WTF_WeakPtr.Assignment
**PASS** WTF_WeakPtr.MultipleFactories
**PASS** WTF_WeakPtr.RevokeAll
**PASS** WTF_WeakPtr.NullFactory
**PASS** WTF_WeakPtr.Dereference
**PASS** WTF_WeakPtr.Forget</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071366</commentid>
    <comment_count>8</comment_count>
      <attachid>247152</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-02-23 15:24:54 -0800</bug_when>
    <thetext>Comment on attachment 247152
Patch v4 (Incorporate cdumez comments)

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

&gt; Source/WTF/wtf/WeakPtr.h:106
&gt; +    void forget() { m_ref = WeakReference&lt;T&gt;::create(nullptr); }

Any reason you kept using forget() instead of revoke() as in WeakPtrFactory?

&gt; Tools/TestWebKitAPI/Tests/WTF/WeakPtr.cpp:125
&gt; +    WeakPtrFactory&lt;int&gt;* factory = new WeakPtrFactory&lt;int&gt;(&amp;dummy);

Still stack-allocated? Any reason you did not make this change?

&gt; Tools/TestWebKitAPI/Tests/WTF/WeakPtr.cpp:142
&gt; +    WeakPtr&lt;int&gt; weakPtr4 = weakPtr2;

The more interesting case is actually copying a WeakPtr that has been revoked / forgotten. Is this covered as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071367</commentid>
    <comment_count>9</comment_count>
      <attachid>247152</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-02-23 15:27:45 -0800</bug_when>
    <thetext>Comment on attachment 247152
Patch v4 (Incorporate cdumez comments)

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

&gt;&gt; Source/WTF/wtf/WeakPtr.h:106
&gt;&gt; +    void forget() { m_ref = WeakReference&lt;T&gt;::create(nullptr); }
&gt; 
&gt; Any reason you kept using forget() instead of revoke() as in WeakPtrFactory?

I think forget() is better, as revoke()&apos;s semantics are different (revoking all vs forgetting this specific one)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071368</commentid>
    <comment_count>10</comment_count>
      <attachid>247152</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-02-23 15:30:14 -0800</bug_when>
    <thetext>Comment on attachment 247152
Patch v4 (Incorporate cdumez comments)

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

&gt;&gt;&gt; Source/WTF/wtf/WeakPtr.h:106
&gt;&gt;&gt; +    void forget() { m_ref = WeakReference&lt;T&gt;::create(nullptr); }
&gt;&gt; 
&gt;&gt; Any reason you kept using forget() instead of revoke() as in WeakPtrFactory?
&gt; 
&gt; I think forget() is better, as revoke()&apos;s semantics are different (revoking all vs forgetting this specific one)

Well, WeakPtr is actually using the name &quot;revokeAll()&quot;. So using revoke() here does not seem confusing to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071369</commentid>
    <comment_count>11</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-02-23 15:31:36 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 247152 [details]
&gt; Patch v4 (Incorporate cdumez comments)
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=247152&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/WeakPtr.h:106
&gt; &gt; +    void forget() { m_ref = WeakReference&lt;T&gt;::create(nullptr); }
&gt; 
&gt; Any reason you kept using forget() instead of revoke() as in WeakPtrFactory?

Yes. The term &apos;forget&apos; seems better for this operation, which should be limited to a single WeakPtr. I think &apos;revokeAll&apos; might not be a great name either, but at least the scary-sounding name is appropriate for an operation that will cause all WeakPtrs to this object to become unusable.

&gt; &gt; Tools/TestWebKitAPI/Tests/WTF/WeakPtr.cpp:125
&gt; &gt; +    WeakPtrFactory&lt;int&gt;* factory = new WeakPtrFactory&lt;int&gt;(&amp;dummy);
&gt; 
&gt; Still stack-allocated? Any reason you did not make this change?

I&apos;ll change it.
 
&gt; &gt; Tools/TestWebKitAPI/Tests/WTF/WeakPtr.cpp:142
&gt; &gt; +    WeakPtr&lt;int&gt; weakPtr4 = weakPtr2;
&gt; 
&gt; The more interesting case is actually copying a WeakPtr that has been
&gt; revoked / forgotten. Is this covered as well?

No; I&apos;ll add that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071371</commentid>
    <comment_count>12</comment_count>
      <attachid>247152</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-02-23 15:36:42 -0800</bug_when>
    <thetext>Comment on attachment 247152
Patch v4 (Incorporate cdumez comments)

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

BTW, where are you supposed to use this? This doesn&apos;t seem like a common operation in the current code base.

&gt;&gt;&gt;&gt;&gt; Source/WTF/wtf/WeakPtr.h:106
&gt;&gt;&gt;&gt;&gt; +    void forget() { m_ref = WeakReference&lt;T&gt;::create(nullptr); }
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Any reason you kept using forget() instead of revoke() as in WeakPtrFactory?
&gt;&gt;&gt; 
&gt;&gt;&gt; I think forget() is better, as revoke()&apos;s semantics are different (revoking all vs forgetting this specific one)
&gt;&gt; 
&gt;&gt; Well, WeakPtr is actually using the name &quot;revokeAll()&quot;. So using revoke() here does not seem confusing to me.
&gt; 
&gt; Yes. The term &apos;forget&apos; seems better for this operation, which should be limited to a single WeakPtr. I think &apos;revokeAll&apos; might not be a great name either, but at least the scary-sounding name is appropriate for an operation that will cause all WeakPtrs to this object to become unusable.

Ok, not a big deal for me. I just thought I would mention that WeakPtrFactory was using a different name for a similar operation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071372</commentid>
    <comment_count>13</comment_count>
      <attachid>247153</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-02-23 15:38:29 -0800</bug_when>
    <thetext>Created attachment 247153
Patch v5 (More tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071373</commentid>
    <comment_count>14</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-02-23 15:42:37 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; BTW, where are you supposed to use this? This doesn&apos;t seem like a common
&gt; operation in the current code base.

It&apos;s a piece of a new patch that I hope to get in later today! :-)

&gt; Ok, not a big deal for me. I just thought I would mention that
&gt; WeakPtrFactory was using a different name for a similar operation.

Ok. We can always change it if we decide that the naming is bad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071375</commentid>
    <comment_count>15</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-02-23 15:44:16 -0800</bug_when>
    <thetext>Committed r180528: &lt;http://trac.webkit.org/changeset/180528&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247145</attachid>
            <date>2015-02-23 14:11:39 -0800</date>
            <delta_ts>2015-02-23 14:30:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141923-20150223141128.patch</filename>
            <type>text/plain</type>
            <size>3229</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxODA1MTUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE1LTAyLTIzICBCcmVudCBGdWxnaGFtICA8YmZ1
bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFdURjo6V2Vha1B0ciBzaG91bGQgaGF2ZSBhICdm
b3JnZXQnIG1ldGhvZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQxOTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3dGYvV2Vha1B0ci5oOgorICAgICAgICAoV1RGOjpXZWFrUHRyOjpmb3JnZXQpOiBB
ZGRlZC4KKwogMjAxNS0wMi0yMCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbW92ZSBUQ01hbGxvYwpJbmRleDogU291cmNlL1dURi93dGYvV2Vha1B0ci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1dlYWtQdHIuaAkocmV2aXNpb24gMTgwNTA5
KQorKysgU291cmNlL1dURi93dGYvV2Vha1B0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDYgKzQxLDcgQEAg
bmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBXZWFrUHRyOwogdGVt
cGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgV2Vha1B0ckZhY3Rvcnk7CiAKKy8vIE5vdGU6IFdlYWtS
ZWZlcmVuY2UgaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCBhbmQgc2hvdWxkIG5vdCBiZSB1
c2VkIGRpcmVjdGx5LgogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNsYXNzIFdlYWtSZWZlcmVuY2Ug
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2Vha1JlZmVyZW5jZTxUPj4gewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFdlYWtSZWZlcmVuY2U8VD4pOwpAQCAtMTAxLDYgKzEwMyw4IEBA
IHB1YmxpYzoKIAogICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBtX3JlZi0+Z2V0
KCk7IH0KIAorICAgIHZvaWQgZm9yZ2V0KCkgeyBtX3JlZiA9IFdlYWtQdHI8VD4oKTsgfQorICAg
IAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgV2Vha1B0ckZhY3Rvcnk8VD47CiAgICAgV2Vh
a1B0cihSZWY8V2Vha1JlZmVyZW5jZTxUPj4mJiByZWYpIDogbV9yZWYoc3RkOjpmb3J3YXJkPFJl
ZjxXZWFrUmVmZXJlbmNlPFQ+Pj4ocmVmKSkgeyB9CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODA1MTUpCisrKyBUb29scy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0wMi0yMyAgQnJl
bnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBXVEY6OldlYWtQdHIg
c2hvdWxkIGhhdmUgYSAnZm9yZ2V0JyBtZXRob2QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE5MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6IEFkZGVkICdGb3JnZXQnIHRlc3Rz
IGNhc2UuCisKIDIwMTUtMDItMjMgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TXSBydW4td2Via2l0LXRlc3RzIC0tbGVha3MgaXMgYnJva2VuIGJlY2F1
c2UgSU9TU2ltdWxhdG9yUG9ydCBoYXMgbm8gaXNfc25vd2xlb3BhcmQgYXR0cmlidXRlCkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XZWFrUHRyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XZWFrUHRyLmNwcAkocmV2aXNpb24gMTgw
NTA5KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExOSw0ICsxMTksMjMgQEAgVEVTVChXVEZfV2Vha1B0ciwgRGVyZWZlcmVu
Y2UpCiAgICAgd2Vha1B0ci0+YmFyKCk7CiB9CiAKK1RFU1QoV1RGX1dlYWtQdHIsIEZvcmdldCkK
K3sKKyAgICBpbnQgZHVtbXkgPSA1OworICAgIFdlYWtQdHJGYWN0b3J5PGludD4qIGZhY3Rvcnkg
PSBuZXcgV2Vha1B0ckZhY3Rvcnk8aW50PigmZHVtbXkpOworICAgIFdlYWtQdHI8aW50PiB3ZWFr
UHRyMSA9IGZhY3RvcnktPmNyZWF0ZVdlYWtQdHIoKTsKKyAgICBXZWFrUHRyPGludD4gd2Vha1B0
cjIgPSBmYWN0b3J5LT5jcmVhdGVXZWFrUHRyKCk7CisgICAgRVhQRUNUX0VRKHdlYWtQdHIxLmdl
dCgpLCAmZHVtbXkpOworICAgIEVYUEVDVF9FUSh3ZWFrUHRyMi5nZXQoKSwgJmR1bW15KTsKKyAg
ICB3ZWFrUHRyMS5mb3JnZXQoKTsKKyAgICBFWFBFQ1RfTlVMTCh3ZWFrUHRyMS5nZXQoKSk7Cisg
ICAgRVhQRUNUX0VRKHdlYWtQdHIyLmdldCgpLCAmZHVtbXkpOworICAgIHdlYWtQdHIxLmZvcmdl
dCgpOworICAgIEVYUEVDVF9OVUxMKHdlYWtQdHIxLmdldCgpKTsKKyAgICBFWFBFQ1RfRVEod2Vh
a1B0cjIuZ2V0KCksICZkdW1teSk7CisgICAgZGVsZXRlIGZhY3RvcnkyOworICAgIEVYUEVDVF9O
VUxMKHdlYWtQdHIxLmdldCgpKTsKKyAgICBFWFBFQ1RfTlVMTCh3ZWFrUHRyMi5nZXQoKSk7Cit9
CisgICAgCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247149</attachid>
            <date>2015-02-23 14:30:21 -0800</date>
            <delta_ts>2015-02-23 14:33:40 -0800</delta_ts>
            <desc>Patch v2 (Fix test build error)</desc>
            <filename>bug-141923-20150223143010.patch</filename>
            <type>text/plain</type>
            <size>3228</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxODA1MTgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE1LTAyLTIzICBCcmVudCBGdWxnaGFtICA8YmZ1
bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFdURjo6V2Vha1B0ciBzaG91bGQgaGF2ZSBhICdm
b3JnZXQnIG1ldGhvZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQxOTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3dGYvV2Vha1B0ci5oOgorICAgICAgICAoV1RGOjpXZWFrUHRyOjpmb3JnZXQpOiBB
ZGRlZC4KKwogMjAxNS0wMi0yMCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbW92ZSBUQ01hbGxvYwpJbmRleDogU291cmNlL1dURi93dGYvV2Vha1B0ci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1dlYWtQdHIuaAkocmV2aXNpb24gMTgwNTE4
KQorKysgU291cmNlL1dURi93dGYvV2Vha1B0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDYgKzQxLDcgQEAg
bmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBXZWFrUHRyOwogdGVt
cGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgV2Vha1B0ckZhY3Rvcnk7CiAKKy8vIE5vdGU6IFdlYWtS
ZWZlcmVuY2UgaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCBhbmQgc2hvdWxkIG5vdCBiZSB1
c2VkIGRpcmVjdGx5LgogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNsYXNzIFdlYWtSZWZlcmVuY2Ug
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2Vha1JlZmVyZW5jZTxUPj4gewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFdlYWtSZWZlcmVuY2U8VD4pOwpAQCAtMTAxLDYgKzEwMyw4IEBA
IHB1YmxpYzoKIAogICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBtX3JlZi0+Z2V0
KCk7IH0KIAorICAgIHZvaWQgZm9yZ2V0KCkgeyBtX3JlZiA9IFdlYWtQdHI8VD4oKTsgfQorICAg
IAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgV2Vha1B0ckZhY3Rvcnk8VD47CiAgICAgV2Vh
a1B0cihSZWY8V2Vha1JlZmVyZW5jZTxUPj4mJiByZWYpIDogbV9yZWYoc3RkOjpmb3J3YXJkPFJl
ZjxXZWFrUmVmZXJlbmNlPFQ+Pj4ocmVmKSkgeyB9CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODA1MTgpCisrKyBUb29scy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0wMi0yMyAgQnJl
bnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBXVEY6OldlYWtQdHIg
c2hvdWxkIGhhdmUgYSAnZm9yZ2V0JyBtZXRob2QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE5MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6IEFkZGVkICdGb3JnZXQnIHRlc3Rz
IGNhc2UuCisKIDIwMTUtMDItMjMgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TXSBydW4td2Via2l0LXRlc3RzIC0tbGVha3MgaXMgYnJva2VuIGJlY2F1
c2UgSU9TU2ltdWxhdG9yUG9ydCBoYXMgbm8gaXNfc25vd2xlb3BhcmQgYXR0cmlidXRlCkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XZWFrUHRyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XZWFrUHRyLmNwcAkocmV2aXNpb24gMTgw
NTE4KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExOSw0ICsxMTksMjMgQEAgVEVTVChXVEZfV2Vha1B0ciwgRGVyZWZlcmVu
Y2UpCiAgICAgd2Vha1B0ci0+YmFyKCk7CiB9CiAKK1RFU1QoV1RGX1dlYWtQdHIsIEZvcmdldCkK
K3sKKyAgICBpbnQgZHVtbXkgPSA1OworICAgIFdlYWtQdHJGYWN0b3J5PGludD4qIGZhY3Rvcnkg
PSBuZXcgV2Vha1B0ckZhY3Rvcnk8aW50PigmZHVtbXkpOworICAgIFdlYWtQdHI8aW50PiB3ZWFr
UHRyMSA9IGZhY3RvcnktPmNyZWF0ZVdlYWtQdHIoKTsKKyAgICBXZWFrUHRyPGludD4gd2Vha1B0
cjIgPSBmYWN0b3J5LT5jcmVhdGVXZWFrUHRyKCk7CisgICAgRVhQRUNUX0VRKHdlYWtQdHIxLmdl
dCgpLCAmZHVtbXkpOworICAgIEVYUEVDVF9FUSh3ZWFrUHRyMi5nZXQoKSwgJmR1bW15KTsKKyAg
ICB3ZWFrUHRyMS5mb3JnZXQoKTsKKyAgICBFWFBFQ1RfTlVMTCh3ZWFrUHRyMS5nZXQoKSk7Cisg
ICAgRVhQRUNUX0VRKHdlYWtQdHIyLmdldCgpLCAmZHVtbXkpOworICAgIHdlYWtQdHIxLmZvcmdl
dCgpOworICAgIEVYUEVDVF9OVUxMKHdlYWtQdHIxLmdldCgpKTsKKyAgICBFWFBFQ1RfRVEod2Vh
a1B0cjIuZ2V0KCksICZkdW1teSk7CisgICAgZGVsZXRlIGZhY3Rvcnk7CisgICAgRVhQRUNUX05V
TEwod2Vha1B0cjEuZ2V0KCkpOworICAgIEVYUEVDVF9OVUxMKHdlYWtQdHIyLmdldCgpKTsKK30K
KyAgICAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>
<flag name="review"
          id="272098"
          type_id="1"
          status="+"
          setter="mmaxfield"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247150</attachid>
            <date>2015-02-23 14:51:55 -0800</date>
            <delta_ts>2015-02-23 15:18:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141923-20150223145144.patch</filename>
            <type>text/plain</type>
            <size>3224</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxODA1MTgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE1LTAyLTIzICBCcmVudCBGdWxnaGFtICA8YmZ1
bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFdURjo6V2Vha1B0ciBzaG91bGQgaGF2ZSBhICdm
b3JnZXQnIG1ldGhvZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQxOTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3dGYvV2Vha1B0ci5oOgorICAgICAgICAoV1RGOjpXZWFrUHRyOjpmb3JnZXQpOiBB
ZGRlZC4KKwogMjAxNS0wMi0yMCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbW92ZSBUQ01hbGxvYwpJbmRleDogU291cmNlL1dURi93dGYvV2Vha1B0ci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1dlYWtQdHIuaAkocmV2aXNpb24gMTgwNTE4
KQorKysgU291cmNlL1dURi93dGYvV2Vha1B0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDYgKzQxLDcgQEAg
bmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBXZWFrUHRyOwogdGVt
cGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgV2Vha1B0ckZhY3Rvcnk7CiAKKy8vIE5vdGU6IFdlYWtS
ZWZlcmVuY2UgaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCBhbmQgc2hvdWxkIG5vdCBiZSB1
c2VkIGRpcmVjdGx5LgogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNsYXNzIFdlYWtSZWZlcmVuY2Ug
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2Vha1JlZmVyZW5jZTxUPj4gewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFdlYWtSZWZlcmVuY2U8VD4pOwpAQCAtMTAxLDYgKzEwMyw4IEBA
IHB1YmxpYzoKIAogICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBtX3JlZi0+Z2V0
KCk7IH0KIAorICAgIHZvaWQgZm9yZ2V0KCkgeyBvcGVyYXRvcj0oV2Vha1B0cigpKTsgfQorCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWFrUHRyRmFjdG9yeTxUPjsKICAgICBXZWFrUHRy
KFJlZjxXZWFrUmVmZXJlbmNlPFQ+PiYmIHJlZikgOiBtX3JlZihzdGQ6OmZvcndhcmQ8UmVmPFdl
YWtSZWZlcmVuY2U8VD4+PihyZWYpKSB7IH0KSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDUxOCkKKysrIFRvb2xzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE1LTAyLTIzICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFdURjo6V2Vha1B0ciBzaG91
bGQgaGF2ZSBhICdmb3JnZXQnIG1ldGhvZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MTkyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKTogQWRkZWQgJ0ZvcmdldCcgdGVzdHMgY2Fz
ZS4KKwogMjAxNS0wMi0yMyAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtpT1NdIHJ1bi13ZWJraXQtdGVzdHMgLS1sZWFrcyBpcyBicm9rZW4gYmVjYXVzZSBJ
T1NTaW11bGF0b3JQb3J0IGhhcyBubyBpc19zbm93bGVvcGFyZCBhdHRyaWJ1dGUKSW5kZXg6IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwCShyZXZpc2lvbiAxODA1MTgp
CisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XZWFrUHRyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTE5LDQgKzExOSwyMyBAQCBURVNUKFdURl9XZWFrUHRyLCBEZXJlZmVyZW5jZSkK
ICAgICB3ZWFrUHRyLT5iYXIoKTsKIH0KIAorVEVTVChXVEZfV2Vha1B0ciwgRm9yZ2V0KQorewor
ICAgIGludCBkdW1teSA9IDU7CisgICAgV2Vha1B0ckZhY3Rvcnk8aW50PiogZmFjdG9yeSA9IG5l
dyBXZWFrUHRyRmFjdG9yeTxpbnQ+KCZkdW1teSk7CisgICAgV2Vha1B0cjxpbnQ+IHdlYWtQdHIx
ID0gZmFjdG9yeS0+Y3JlYXRlV2Vha1B0cigpOworICAgIFdlYWtQdHI8aW50PiB3ZWFrUHRyMiA9
IGZhY3RvcnktPmNyZWF0ZVdlYWtQdHIoKTsKKyAgICBFWFBFQ1RfRVEod2Vha1B0cjEuZ2V0KCks
ICZkdW1teSk7CisgICAgRVhQRUNUX0VRKHdlYWtQdHIyLmdldCgpLCAmZHVtbXkpOworICAgIHdl
YWtQdHIxLmZvcmdldCgpOworICAgIEVYUEVDVF9OVUxMKHdlYWtQdHIxLmdldCgpKTsKKyAgICBF
WFBFQ1RfRVEod2Vha1B0cjIuZ2V0KCksICZkdW1teSk7CisgICAgd2Vha1B0cjEuZm9yZ2V0KCk7
CisgICAgRVhQRUNUX05VTEwod2Vha1B0cjEuZ2V0KCkpOworICAgIEVYUEVDVF9FUSh3ZWFrUHRy
Mi5nZXQoKSwgJmR1bW15KTsKKyAgICBkZWxldGUgZmFjdG9yeTsKKyAgICBFWFBFQ1RfTlVMTCh3
ZWFrUHRyMS5nZXQoKSk7CisgICAgRVhQRUNUX05VTEwod2Vha1B0cjIuZ2V0KCkpOworfQorICAg
IAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247152</attachid>
            <date>2015-02-23 15:18:56 -0800</date>
            <delta_ts>2015-02-23 15:38:25 -0800</delta_ts>
            <desc>Patch v4 (Incorporate cdumez comments)</desc>
            <filename>bug-141923-20150223151845.patch</filename>
            <type>text/plain</type>
            <size>3818</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxODA1MTgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE1LTAyLTIzICBCcmVudCBGdWxnaGFtICA8YmZ1
bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFdURjo6V2Vha1B0ciBzaG91bGQgaGF2ZSBhICdm
b3JnZXQnIG1ldGhvZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQxOTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3dGYvV2Vha1B0ci5oOgorICAgICAgICAoV1RGOjpXZWFrUHRyOjpmb3JnZXQpOiBB
ZGRlZC4KKwogMjAxNS0wMi0yMCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbW92ZSBUQ01hbGxvYwpJbmRleDogU291cmNlL1dURi93dGYvV2Vha1B0ci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1dlYWtQdHIuaAkocmV2aXNpb24gMTgwNTE4
KQorKysgU291cmNlL1dURi93dGYvV2Vha1B0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDYgKzQxLDcgQEAg
bmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBXZWFrUHRyOwogdGVt
cGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgV2Vha1B0ckZhY3Rvcnk7CiAKKy8vIE5vdGU6IFdlYWtS
ZWZlcmVuY2UgaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCBhbmQgc2hvdWxkIG5vdCBiZSB1
c2VkIGRpcmVjdGx5LgogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNsYXNzIFdlYWtSZWZlcmVuY2Ug
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2Vha1JlZmVyZW5jZTxUPj4gewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFdlYWtSZWZlcmVuY2U8VD4pOwpAQCAtMTAxLDYgKzEwMyw4IEBA
IHB1YmxpYzoKIAogICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBtX3JlZi0+Z2V0
KCk7IH0KIAorICAgIHZvaWQgZm9yZ2V0KCkgeyBtX3JlZiA9IFdlYWtSZWZlcmVuY2U8VD46OmNy
ZWF0ZShudWxscHRyKTsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWFrUHRyRmFj
dG9yeTxUPjsKICAgICBXZWFrUHRyKFJlZjxXZWFrUmVmZXJlbmNlPFQ+PiYmIHJlZikgOiBtX3Jl
ZihzdGQ6OmZvcndhcmQ8UmVmPFdlYWtSZWZlcmVuY2U8VD4+PihyZWYpKSB7IH0KSW5kZXg6IFRv
b2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4
MDUxOCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE1LTAyLTIzICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAg
ICAgIFdURjo6V2Vha1B0ciBzaG91bGQgaGF2ZSBhICdmb3JnZXQnIG1ldGhvZC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTkyMworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvV2Vha1B0ci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKTogQWRk
ZWQgJ0ZvcmdldCcgdGVzdHMgY2FzZS4KKwogMjAxNS0wMi0yMyAgRGF2aWQgS2lsemVyICA8ZGRr
aWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIHJ1bi13ZWJraXQtdGVzdHMgLS1sZWFr
cyBpcyBicm9rZW4gYmVjYXVzZSBJT1NTaW11bGF0b3JQb3J0IGhhcyBubyBpc19zbm93bGVvcGFy
ZCBhdHRyaWJ1dGUKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIu
Y3BwCShyZXZpc2lvbiAxODA1MTgpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9X
ZWFrUHRyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDQgKzExOSw0MCBAQCBURVNUKFdURl9X
ZWFrUHRyLCBEZXJlZmVyZW5jZSkKICAgICB3ZWFrUHRyLT5iYXIoKTsKIH0KIAorVEVTVChXVEZf
V2Vha1B0ciwgRm9yZ2V0KQoreworICAgIGludCBkdW1teSA9IDU7CisgICAgV2Vha1B0ckZhY3Rv
cnk8aW50PiogZmFjdG9yeSA9IG5ldyBXZWFrUHRyRmFjdG9yeTxpbnQ+KCZkdW1teSk7CisgICAg
V2Vha1B0cjxpbnQ+IHdlYWtQdHIxID0gZmFjdG9yeS0+Y3JlYXRlV2Vha1B0cigpOworICAgIFdl
YWtQdHI8aW50PiB3ZWFrUHRyMiA9IGZhY3RvcnktPmNyZWF0ZVdlYWtQdHIoKTsKKyAgICBFWFBF
Q1RfRVEod2Vha1B0cjEuZ2V0KCksICZkdW1teSk7CisgICAgRVhQRUNUX0VRKHdlYWtQdHIyLmdl
dCgpLCAmZHVtbXkpOworICAgIHdlYWtQdHIxLmZvcmdldCgpOworICAgIEVYUEVDVF9OVUxMKHdl
YWtQdHIxLmdldCgpKTsKKyAgICBFWFBFQ1RfRVEod2Vha1B0cjIuZ2V0KCksICZkdW1teSk7Cisg
ICAgd2Vha1B0cjEuZm9yZ2V0KCk7CisgICAgRVhQRUNUX05VTEwod2Vha1B0cjEuZ2V0KCkpOwor
ICAgIEVYUEVDVF9FUSh3ZWFrUHRyMi5nZXQoKSwgJmR1bW15KTsKKyAgICBXZWFrUHRyPGludD4g
d2Vha1B0cjMgPSB3ZWFrUHRyMjsKKyAgICBFWFBFQ1RfRVEod2Vha1B0cjIuZ2V0KCksICZkdW1t
eSk7CisgICAgRVhQRUNUX0VRKHdlYWtQdHIzLmdldCgpLCAmZHVtbXkpOworICAgIHdlYWtQdHIz
LmZvcmdldCgpOworICAgIEVYUEVDVF9OVUxMKHdlYWtQdHIzLmdldCgpKTsKKyAgICBFWFBFQ1Rf
RVEod2Vha1B0cjIuZ2V0KCksICZkdW1teSk7CisgICAgV2Vha1B0cjxpbnQ+IHdlYWtQdHI0ID0g
d2Vha1B0cjI7CisgICAgRVhQRUNUX0VRKHdlYWtQdHIyLmdldCgpLCAmZHVtbXkpOworICAgIEVY
UEVDVF9FUSh3ZWFrUHRyNC5nZXQoKSwgJmR1bW15KTsKKworICAgIGludCBkdW1teTIgPSA3Owor
ICAgIFdlYWtQdHJGYWN0b3J5PGludD4gZmFjdG9yeTIoJmR1bW15Mik7CisgICAgd2Vha1B0cjQg
PSBmYWN0b3J5Mi5jcmVhdGVXZWFrUHRyKCk7CisgICAgRVhQRUNUX0VRKHdlYWtQdHIyLmdldCgp
LCAmZHVtbXkpOworICAgIEVYUEVDVF9FUSh3ZWFrUHRyNC5nZXQoKSwgJmR1bW15Mik7CisgICAg
CisgICAgZGVsZXRlIGZhY3Rvcnk7CisgICAgRVhQRUNUX05VTEwod2Vha1B0cjEuZ2V0KCkpOwor
ICAgIEVYUEVDVF9OVUxMKHdlYWtQdHIyLmdldCgpKTsKKyAgICBFWFBFQ1RfRVEod2Vha1B0cjQu
Z2V0KCksICZkdW1teTIpOworfQorICAgIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247153</attachid>
            <date>2015-02-23 15:38:29 -0800</date>
            <delta_ts>2015-02-23 15:40:13 -0800</delta_ts>
            <desc>Patch v5 (More tests)</desc>
            <filename>bug-141923-20150223153818.patch</filename>
            <type>text/plain</type>
            <size>4206</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxODA1MTgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE1LTAyLTIzICBCcmVudCBGdWxnaGFtICA8YmZ1
bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFdURjo6V2Vha1B0ciBzaG91bGQgaGF2ZSBhICdm
b3JnZXQnIG1ldGhvZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQxOTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3dGYvV2Vha1B0ci5oOgorICAgICAgICAoV1RGOjpXZWFrUHRyOjpmb3JnZXQpOiBB
ZGRlZC4KKwogMjAxNS0wMi0yMCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbW92ZSBUQ01hbGxvYwpJbmRleDogU291cmNlL1dURi93dGYvV2Vha1B0ci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1dlYWtQdHIuaAkocmV2aXNpb24gMTgwNTE4
KQorKysgU291cmNlL1dURi93dGYvV2Vha1B0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDYgKzQxLDcgQEAg
bmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBXZWFrUHRyOwogdGVt
cGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgV2Vha1B0ckZhY3Rvcnk7CiAKKy8vIE5vdGU6IFdlYWtS
ZWZlcmVuY2UgaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCBhbmQgc2hvdWxkIG5vdCBiZSB1
c2VkIGRpcmVjdGx5LgogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNsYXNzIFdlYWtSZWZlcmVuY2Ug
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2Vha1JlZmVyZW5jZTxUPj4gewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFdlYWtSZWZlcmVuY2U8VD4pOwpAQCAtMTAxLDYgKzEwMyw4IEBA
IHB1YmxpYzoKIAogICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBtX3JlZi0+Z2V0
KCk7IH0KIAorICAgIHZvaWQgZm9yZ2V0KCkgeyBtX3JlZiA9IFdlYWtSZWZlcmVuY2U8VD46OmNy
ZWF0ZShudWxscHRyKTsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWFrUHRyRmFj
dG9yeTxUPjsKICAgICBXZWFrUHRyKFJlZjxXZWFrUmVmZXJlbmNlPFQ+PiYmIHJlZikgOiBtX3Jl
ZihzdGQ6OmZvcndhcmQ8UmVmPFdlYWtSZWZlcmVuY2U8VD4+PihyZWYpKSB7IH0KSW5kZXg6IFRv
b2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4
MDUxOCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE1LTAyLTIzICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAg
ICAgIFdURjo6V2Vha1B0ciBzaG91bGQgaGF2ZSBhICdmb3JnZXQnIG1ldGhvZC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTkyMworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvV2Vha1B0ci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKTogQWRk
ZWQgJ0ZvcmdldCcgdGVzdHMgY2FzZS4KKwogMjAxNS0wMi0yMyAgRGF2aWQgS2lsemVyICA8ZGRr
aWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIHJ1bi13ZWJraXQtdGVzdHMgLS1sZWFr
cyBpcyBicm9rZW4gYmVjYXVzZSBJT1NTaW11bGF0b3JQb3J0IGhhcyBubyBpc19zbm93bGVvcGFy
ZCBhdHRyaWJ1dGUKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIu
Y3BwCShyZXZpc2lvbiAxODA1MTgpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9X
ZWFrUHRyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDQgKzExOSw1MiBAQCBURVNUKFdURl9X
ZWFrUHRyLCBEZXJlZmVyZW5jZSkKICAgICB3ZWFrUHRyLT5iYXIoKTsKIH0KIAorVEVTVChXVEZf
V2Vha1B0ciwgRm9yZ2V0KQoreworICAgIGludCBkdW1teSA9IDU7CisgICAgaW50IGR1bW15MiA9
IDc7CisKKyAgICBXZWFrUHRyRmFjdG9yeTxpbnQ+IG91dGVyRmFjdG9yeSgmZHVtbXkyKTsKKyAg
ICBXZWFrUHRyPGludD4gd2Vha1B0cjEsIHdlYWtQdHIyLCB3ZWFrUHRyNDsKKyAgICB7CisgICAg
ICAgIFdlYWtQdHJGYWN0b3J5PGludD4gaW5uZXJGYWN0b3J5KCZkdW1teSk7CisgICAgICAgIHdl
YWtQdHIxID0gaW5uZXJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKTsKKyAgICAgICAgd2Vha1B0cjIg
PSBpbm5lckZhY3RvcnkuY3JlYXRlV2Vha1B0cigpOworICAgICAgICBFWFBFQ1RfRVEod2Vha1B0
cjEuZ2V0KCksICZkdW1teSk7CisgICAgICAgIEVYUEVDVF9FUSh3ZWFrUHRyMi5nZXQoKSwgJmR1
bW15KTsKKyAgICAgICAgd2Vha1B0cjEuZm9yZ2V0KCk7CisgICAgICAgIEVYUEVDVF9OVUxMKHdl
YWtQdHIxLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKHdlYWtQdHIyLmdldCgpLCAmZHVtbXkp
OworICAgICAgICB3ZWFrUHRyMS5mb3JnZXQoKTsKKyAgICAgICAgRVhQRUNUX05VTEwod2Vha1B0
cjEuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEod2Vha1B0cjIuZ2V0KCksICZkdW1teSk7Cisg
ICAgICAgIFdlYWtQdHI8aW50PiB3ZWFrUHRyMyA9IHdlYWtQdHIyOworICAgICAgICBFWFBFQ1Rf
RVEod2Vha1B0cjIuZ2V0KCksICZkdW1teSk7CisgICAgICAgIEVYUEVDVF9FUSh3ZWFrUHRyMy5n
ZXQoKSwgJmR1bW15KTsKKyAgICAgICAgd2Vha1B0cjMuZm9yZ2V0KCk7CisgICAgICAgIEVYUEVD
VF9OVUxMKHdlYWtQdHIzLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKHdlYWtQdHIyLmdldCgp
LCAmZHVtbXkpOworICAgICAgICB3ZWFrUHRyNCA9IHdlYWtQdHIyOworICAgICAgICBFWFBFQ1Rf
RVEod2Vha1B0cjIuZ2V0KCksICZkdW1teSk7CisgICAgICAgIEVYUEVDVF9FUSh3ZWFrUHRyNC5n
ZXQoKSwgJmR1bW15KTsKKworICAgICAgICB3ZWFrUHRyNCA9IG91dGVyRmFjdG9yeS5jcmVhdGVX
ZWFrUHRyKCk7CisgICAgICAgIEVYUEVDVF9FUSh3ZWFrUHRyMi5nZXQoKSwgJmR1bW15KTsKKyAg
ICAgICAgRVhQRUNUX0VRKHdlYWtQdHI0LmdldCgpLCAmZHVtbXkyKTsKKyAgICB9CisKKyAgICBF
WFBFQ1RfTlVMTCh3ZWFrUHRyMS5nZXQoKSk7CisgICAgRVhQRUNUX05VTEwod2Vha1B0cjIuZ2V0
KCkpOworICAgIEVYUEVDVF9FUSh3ZWFrUHRyNC5nZXQoKSwgJmR1bW15Mik7CisKKyAgICBXZWFr
UHRyPGludD4gd2Vha1B0cjUgPSB3ZWFrUHRyNDsKKyAgICBFWFBFQ1RfRVEod2Vha1B0cjQuZ2V0
KCksICZkdW1teTIpOworICAgIEVYUEVDVF9FUSh3ZWFrUHRyNS5nZXQoKSwgJmR1bW15Mik7Cisg
ICAgd2Vha1B0cjUuZm9yZ2V0KCk7CisgICAgRVhQRUNUX05VTEwod2Vha1B0cjUuZ2V0KCkpOwor
ICAgIFdlYWtQdHI8aW50PiB3ZWFrUHRyNiA9IHdlYWtQdHI1OworICAgIEVYUEVDVF9OVUxMKHdl
YWtQdHI2LmdldCgpKTsKKyAgICBFWFBFQ1RfRVEod2Vha1B0cjUuZ2V0KCksIHdlYWtQdHI2Lmdl
dCgpKTsKK30KKyAgICAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>
<flag name="review"
          id="272103"
          type_id="1"
          status="+"
          setter="mmaxfield"
    />
          </attachment>
      

    </bug>

</bugzilla>