<?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>128451</bug_id>
          
          <creation_ts>2014-02-08 00:39:28 -0800</creation_ts>
          <short_desc>Change JSLock::dropAllLocks() and friends to use lock() and unlock()</short_desc>
          <delta_ts>2014-02-10 14:23:28 -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>JavaScriptCore</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>
          <dependson>128450</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>978343</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-08 00:39:28 -0800</bug_when>
    <thetext>The current implementations of JSLock&apos;s dropAllLocks(), dropAllLocksUnconditionally(), and grabAllLocks() currently implement locking / unlocking by duplicating the code from lock() and unlock().  Instead, they should just call lock() and unlock() instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978380</commentid>
    <comment_count>1</comment_count>
      <attachid>223569</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-08 10:02:43 -0800</bug_when>
    <thetext>Created attachment 223569
work in progress.

Let&apos;s try this on the EWS bots.  This patch is dependent on &lt;https://webkit.org/b/128450&gt; landing.  Once 128450 lands, this patch should reduce in size a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978390</commentid>
    <comment_count>2</comment_count>
      <attachid>223569</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-02-08 10:56:49 -0800</bug_when>
    <thetext>Comment on attachment 223569
work in progress.

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

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        lock() and unlock(). Instead, they should just call lock() and unlock()
&gt; +        instead.

Instead instead.

&gt; Source/JavaScriptCore/ChangeLog:19
&gt; +        - Also clear m_ownerThread when we&apos;re going to relinquish the lock.

Let&apos;s not mix this behavior change into a refactoring patch.

&gt; Source/JavaScriptCore/ChangeLog:55
&gt; +2014-02-08  Mark Lam  &lt;mark.lam@apple.com&gt;
&gt; +
&gt; +        DropAllLocks should let JSLock lock its spinLock.
&gt; +        &lt;https://webkit.org/b/128450&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Instead of having DropAllLock acquire JSLock&apos;s spinLock and then passing
&gt; +        it into dropAllLocks(), dropAllLocksUnconditionally(), and grabAllLocks(),
&gt; +        let those JSLock methods acquire the spinLock themselves.
&gt; +
&gt; +        * runtime/JSLock.cpp:
&gt; +        (JSC::JSLock::dropAllLocks):
&gt; +        (JSC::JSLock::dropAllLocksUnconditionally):
&gt; +        (JSC::JSLock::grabAllLocks):
&gt; +        (JSC::JSLock::DropAllLocks::DropAllLocks):
&gt; +        (JSC::JSLock::DropAllLocks::~DropAllLocks):
&gt; +        * runtime/JSLock.h:

Remove please.

&gt; Source/JavaScriptCore/runtime/JSLock.cpp:228
&gt;      // Don&apos;t drop the locks if they&apos;ve already been dropped once.
&gt;      // (If the prior drop came from another thread, and it resumed first,
&gt;      // it could trash our register file).
&gt;      if (m_lockDropDepth)
&gt;          return 0;

m_lockDropDepth is a shared value, so it&apos;s not sound to read m_lockDropDepth without holding the spinlock.

&gt; Source/JavaScriptCore/runtime/JSLock.cpp:276
&gt; +    ASSERT(!m_vm || !m_vm-&gt;stackPointerAtVMEntry);

I don&apos;t think anything prevents another thread from setting these values once we&apos;ve relinquished the lock, so this ASSERT seems invalid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978758</commentid>
    <comment_count>3</comment_count>
      <attachid>223569</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-09 23:46:36 -0800</bug_when>
    <thetext>Comment on attachment 223569
work in progress.

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

&gt;&gt; Source/JavaScriptCore/runtime/JSLock.cpp:228
&gt;&gt;          return 0;
&gt; 
&gt; m_lockDropDepth is a shared value, so it&apos;s not sound to read m_lockDropDepth without holding the spinlock.

We don’t need the spinLock here because m_lockDropDepth is (well ... should have been) protected by the JSLock’s own mutex.  Only the owner of the JSLock may read or write to m_lockDropDepth.  So, I still have a bug here i.e. I cannot move this m_lockDropDepth check before the ownership check below (which was previously above it).  Will fix.

&gt;&gt; Source/JavaScriptCore/runtime/JSLock.cpp:276
&gt;&gt; +    ASSERT(!m_vm || !m_vm-&gt;stackPointerAtVMEntry);
&gt; 
&gt; I don&apos;t think anything prevents another thread from setting these values once we&apos;ve relinquished the lock, so this ASSERT seems invalid.

Thanks for catching this.  I thought of it when I contemplated adding a similar assert to grabAllLocks() (which is why I didn’t add such an assert there), but then went on to miss the invalidity of it here.  Will remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979009</commentid>
    <comment_count>4</comment_count>
      <attachid>223735</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-10 12:55:50 -0800</bug_when>
    <thetext>Created attachment 223735
updated patch now that 128450 has landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979010</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-10 13:00:23 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=223735) [details]
&gt; updated patch now that 128451 has landed.

Correction: “that 128450 has landed”, not 128451.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979051</commentid>
    <comment_count>6</comment_count>
      <attachid>223735</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-02-10 14:16:04 -0800</bug_when>
    <thetext>Comment on attachment 223735
updated patch now that 128450 has landed.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979061</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-10 14:23:28 -0800</bug_when>
    <thetext>Thanks.  Landed in r163820: &lt;http://trac.webkit.org/r163820&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223569</attachid>
            <date>2014-02-08 10:02:43 -0800</date>
            <delta_ts>2014-02-10 12:55:50 -0800</delta_ts>
            <desc>work in progress.</desc>
            <filename>bug-128451.patch</filename>
            <type>text/plain</type>
            <size>10336</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYzNzA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU5IEBA
CisyMDE0LTAyLTA4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
aGFuZ2UgSlNMb2NrOjpkcm9wQWxsTG9ja3MoKSBhbmQgZnJpZW5kcyB0byB1c2UgbG9jaygpIGFu
ZCB1bmxvY2soKS4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEyODQ1MT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHksIEpT
TG9jaydzIGRyb3BBbGxMb2NrcygpLCBkcm9wQWxsTG9ja3NVbmNvbmRpdGlvbmFsbHkoKSwgYW5k
CisgICAgICAgIGdyYWJBbGxMb2NrcygpIGltcGxlbWVudCBsb2NraW5nIC8gdW5sb2NraW5nIGJ5
IGR1cGxpY2F0aW5nIHRoZSBjb2RlIGZyb20KKyAgICAgICAgbG9jaygpIGFuZCB1bmxvY2soKS4g
SW5zdGVhZCwgdGhleSBzaG91bGQganVzdCBjYWxsIGxvY2soKSBhbmQgdW5sb2NrKCkKKyAgICAg
ICAgaW5zdGVhZC4KKworICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNMb2NrOjpsb2NrKToKKyAgICAgICAgKEpTQzo6SlNMb2NrOjp1bmxvY2spOgorICAgICAg
ICAtIE1vZGlmaWVkIGxvY2soKSBhbmQgdW5sb2NrKCkgaW50byBhIHZlcnNpb24gdGhhdCB0YWtl
cyBhbiBlbnRyeSBjb3VudAorICAgICAgICAgIHRvIGxvY2sgLyB1bmxvY2suIFRoZSBwcmV2aW91
cyBsb2NrKCkgYW5kIHVubG9jaygpIG5vdyBjYWxscyB0aGVzZQorICAgICAgICAgIG5ldyB2ZXJz
aW9ucyB3aXRoIGFuIGVudHJ5IGNvdW50IG9mIDEuCisgICAgICAgIC0gQWxzbyBjbGVhciBtX293
bmVyVGhyZWFkIHdoZW4gd2UncmUgZ29pbmcgdG8gcmVsaW5xdWlzaCB0aGUgbG9jay4KKworICAg
ICAgICAoSlNDOjpKU0xvY2s6OmRyb3BBbGxMb2Nrcyk6CisgICAgICAgIChKU0M6OkpTTG9jazo6
ZHJvcEFsbExvY2tzVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpncmFi
QWxsTG9ja3MpOgorICAgICAgICAtIERlbGVnYXRlIHRvIHVubG9jaygpIGFuZCBsb2NrKCkgaW5z
dGVhZCBvZiBkdXBsaWNhdGluZyB0aGUgbG9jayAvIHVubG9jaworICAgICAgICAgIGNvZGUuCisg
ICAgICAgIC0gVGhlcmUgaXMgb25lIGRpZmZlcmVuY2UgYmV0d2VlbiBjYWxsaW5nIGxvY2soKSBp
bnN0ZWFkIG9mIGR1cGxpY2F0aW5nCisgICAgICAgICAgaXRzIGNvZGUgaW4gZ3JhYkFsbExvY2so
KSBpLmUuIGxvY2soKSBkb2VzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbAorICAgICAgICAgIHdv
cms6CisgICAgICAgICAgICAgMS4gc2V0IFZNIHN0YWNrUG9pbnRlckF0Vk1FbnRyeS4KKyAgICAg
ICAgICAgICAyLiB1cGRhdGUgVk0gc3RhY2tMaW1pdCBhbmQgcmVzZXJ2ZWRab25lU2l6ZS4KKyAg
ICAgICAgICAgICAzLiBzZXQgVk0gbGFzdFN0YWNrVG9wLgorICAgICAgICAgIEhvd2V2ZXIsIHRo
aXMgZXh0cmEgd29yayBkb2Vzbid0IG1hdHRlciBiZWNhdXNlIGdyYWJBbGxMb2NrcygpIHdpbGwK
KyAgICAgICAgICB3cml0ZSBvdmVyIHRob3NlIHZhbHVlcyBpbW1lZGlhdGVseSB3aXRoIHRoZWly
IHNhdmVkIHZhbHVlcyBpbiB0aGUKKyAgICAgICAgICB0aHJlYWREYXRhLgorCisgICAgICAgICog
cnVudGltZS9KU0xvY2suaDoKKworMjAxNC0wMi0wOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBs
ZS5jb20+CisKKyAgICAgICAgRHJvcEFsbExvY2tzIHNob3VsZCBsZXQgSlNMb2NrIGxvY2sgaXRz
IHNwaW5Mb2NrLgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTI4NDUwPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluc3RlYWQgb2YgaGF2
aW5nIERyb3BBbGxMb2NrIGFjcXVpcmUgSlNMb2NrJ3Mgc3BpbkxvY2sgYW5kIHRoZW4gcGFzc2lu
ZworICAgICAgICBpdCBpbnRvIGRyb3BBbGxMb2NrcygpLCBkcm9wQWxsTG9ja3NVbmNvbmRpdGlv
bmFsbHkoKSwgYW5kIGdyYWJBbGxMb2NrcygpLAorICAgICAgICBsZXQgdGhvc2UgSlNMb2NrIG1l
dGhvZHMgYWNxdWlyZSB0aGUgc3BpbkxvY2sgdGhlbXNlbHZlcy4KKworICAgICAgICAqIHJ1bnRp
bWUvSlNMb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpkcm9wQWxsTG9ja3MpOgorICAg
ICAgICAoSlNDOjpKU0xvY2s6OmRyb3BBbGxMb2Nrc1VuY29uZGl0aW9uYWxseSk6CisgICAgICAg
IChKU0M6OkpTTG9jazo6Z3JhYkFsbExvY2tzKToKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpEcm9w
QWxsTG9ja3M6OkRyb3BBbGxMb2Nrcyk6CisgICAgICAgIChKU0M6OkpTTG9jazo6RHJvcEFsbExv
Y2tzOjp+RHJvcEFsbExvY2tzKToKKyAgICAgICAgKiBydW50aW1lL0pTTG9jay5oOgorCiAyMDE0
LTAyLTA3ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgPGh0dHBzOi8v
d2Via2l0Lm9yZy9iLzEyODQ0OD4gRml4IHVzZSBvZiBhdmFpbGFiaWxpdHkgbWFjcm9zIG9uIHJl
Y2VudGx5LWFkZGVkIEFQSXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNM
b2NrLmNwcAkocmV2aXNpb24gMTYzNzAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDExICsxMDUsMTcgQEAgdm9pZCBK
U0xvY2s6OndpbGxEZXN0cm95Vk0oVk0qIHZtKQogCiB2b2lkIEpTTG9jazo6bG9jaygpCiB7Cisg
ICAgbG9jaygxKTsKK30KKwordm9pZCBKU0xvY2s6OmxvY2soaW50cHRyX3QgbG9ja0NvdW50KQor
eworICAgIEFTU0VSVChsb2NrQ291bnQgPiAwKTsKICAgICBUaHJlYWRJZGVudGlmaWVyIGN1cnJl
bnRUaHJlYWQgPSBXVEY6OmN1cnJlbnRUaHJlYWQoKTsKICAgICB7CiAgICAgICAgIFNwaW5Mb2Nr
SG9sZGVyIGhvbGRlcigmbV9zcGluTG9jayk7CiAgICAgICAgIGlmIChtX293bmVyVGhyZWFkID09
IGN1cnJlbnRUaHJlYWQgJiYgbV9sb2NrQ291bnQpIHsKLSAgICAgICAgICAgIG1fbG9ja0NvdW50
Kys7CisgICAgICAgICAgICBtX2xvY2tDb3VudCArPSBsb2NrQ291bnQ7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0xMjAsNyArMTI2LDcgQEAgdm9pZCBKU0xvY2s6
OmxvY2soKQogICAgICAgICBTcGluTG9ja0hvbGRlciBob2xkZXIoJm1fc3BpbkxvY2spOwogICAg
ICAgICBtX293bmVyVGhyZWFkID0gY3VycmVudFRocmVhZDsKICAgICAgICAgQVNTRVJUKCFtX2xv
Y2tDb3VudCk7Ci0gICAgICAgIG1fbG9ja0NvdW50ID0gMTsKKyAgICAgICAgbV9sb2NrQ291bnQg
PSBsb2NrQ291bnQ7CiAKICAgICAgICAgV1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9IHd0ZlRo
cmVhZERhdGEoKTsKIApAQCAtMTM1LDE2ICsxNDEsMjMgQEAgdm9pZCBKU0xvY2s6OmxvY2soKQog
CiB2b2lkIEpTTG9jazo6dW5sb2NrKCkKIHsKKyAgICB1bmxvY2soMSk7Cit9CisKK3ZvaWQgSlNM
b2NrOjp1bmxvY2soaW50cHRyX3QgdW5sb2NrQ291bnQpCit7CiAgICAgU3BpbkxvY2tIb2xkZXIg
aG9sZGVyKCZtX3NwaW5Mb2NrKTsKICAgICBBU1NFUlQoY3VycmVudFRocmVhZElzSG9sZGluZ0xv
Y2soKSk7CisgICAgQVNTRVJUKG1fbG9ja0NvdW50ID49IHVubG9ja0NvdW50KTsKIAotICAgIG1f
bG9ja0NvdW50LS07CisgICAgbV9sb2NrQ291bnQgLT0gdW5sb2NrQ291bnQ7CiAKICAgICBpZiAo
IW1fbG9ja0NvdW50KSB7CiAgICAgICAgIGlmIChtX3ZtKSB7CiAgICAgICAgICAgICBtX3ZtLT5z
dGFja1BvaW50ZXJBdFZNRW50cnkgPSBudWxscHRyOwogICAgICAgICAgICAgbV92bS0+dXBkYXRl
U3RhY2tMaW1pdFdpdGhSZXNlcnZlZFpvbmVTaXplKHd0ZlRocmVhZERhdGEoKS5zYXZlZFJlc2Vy
dmVkWm9uZVNpemUoKSk7CiAgICAgICAgIH0KKyAgICAgICAgbV9vd25lclRocmVhZCA9IDA7CiAg
ICAgICAgIG1fbG9jay51bmxvY2soKTsKICAgICB9CiB9CkBAIC0yMDYsMjEgKzIxOSwyNCBAQCBi
b29sIEpTTG9jazo6Y3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soCiAvLwogCiAvLyBUaGlzIGZ1
bmN0aW9uIHJldHVybnMgdGhlIG51bWJlciBvZiBsb2NrcyB0aGF0IHdlcmUgZHJvcHBlZC4KLXVu
c2lnbmVkIEpTTG9jazo6ZHJvcEFsbExvY2tzKFNwaW5Mb2NrJiBzcGluTG9jaykKK3Vuc2lnbmVk
IEpTTG9jazo6ZHJvcEFsbExvY2tzKCkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKHNwaW5Mb2NrLCBz
cGluTG9jay5Jc0hlbGQoKSk7Ci0gICAgLy8gQ2hlY2sgaWYgdGhpcyB0aHJlYWQgaXMgY3VycmVu
dGx5IGhvbGRpbmcgdGhlIGxvY2suCi0gICAgLy8gRklYTUU6IE1heWJlIHdlIHdhbnQgdG8gcmVx
dWlyZSB0aGlzLCBndWFyZCB3aXRoIGFuIEFTU0VSVD8KLSAgICB1bnNpZ25lZCBsb2NrQ291bnQg
PSBtX2xvY2tDb3VudDsKLSAgICBpZiAoIWxvY2tDb3VudCB8fCBtX293bmVyVGhyZWFkICE9IFdU
Rjo6Y3VycmVudFRocmVhZCgpKQotICAgICAgICByZXR1cm4gMDsKLQogICAgIC8vIERvbid0IGRy
b3AgdGhlIGxvY2tzIGlmIHRoZXkndmUgYWxyZWFkeSBiZWVuIGRyb3BwZWQgb25jZS4KICAgICAv
LyAoSWYgdGhlIHByaW9yIGRyb3AgY2FtZSBmcm9tIGFub3RoZXIgdGhyZWFkLCBhbmQgaXQgcmVz
dW1lZCBmaXJzdCwKICAgICAvLyBpdCBjb3VsZCB0cmFzaCBvdXIgcmVnaXN0ZXIgZmlsZSkuCiAg
ICAgaWYgKG1fbG9ja0Ryb3BEZXB0aCkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICB1bnNpZ25l
ZCBsb2NrQ291bnQgPSAwOworICAgIHsKKyAgICAgICAgU3BpbkxvY2tIb2xkZXIgaG9sZGVyKCZt
X3NwaW5Mb2NrKTsKKyAgICAgICAgbG9ja0NvdW50ID0gbV9sb2NrQ291bnQ7CisgICAgICAgIC8v
IENoZWNrIGlmIHRoaXMgdGhyZWFkIGlzIGN1cnJlbnRseSBob2xkaW5nIHRoZSBsb2NrLgorICAg
ICAgICAvLyBGSVhNRTogTWF5YmUgd2Ugd2FudCB0byByZXF1aXJlIHRoaXMsIGd1YXJkIHdpdGgg
YW4gQVNTRVJUPworICAgICAgICBpZiAoIWxvY2tDb3VudCB8fCBtX293bmVyVGhyZWFkICE9IFdU
Rjo6Y3VycmVudFRocmVhZCgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAg
V1RGVGhyZWFkRGF0YSYgdGhyZWFkRGF0YSA9IHd0ZlRocmVhZERhdGEoKTsKICAgICB0aHJlYWRE
YXRhLnNldFNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KG1fdm0tPnN0YWNrUG9pbnRlckF0Vk1F
bnRyeSk7CiAgICAgdGhyZWFkRGF0YS5zZXRTYXZlZExhc3RTdGFja1RvcChtX3ZtLT5sYXN0U3Rh
Y2tUb3AoKSk7CkBAIC0yMjgsMjMgKzI0NCwyNCBAQCB1bnNpZ25lZCBKU0xvY2s6OmRyb3BBbGxM
b2NrcyhTcGluTG9jayYgCiAKICAgICAvLyBtX2xvY2tEcm9wRGVwdGggaXMgb25seSBpbmNyZW1l
bnRlZCBpZiBhbnkgbG9ja3Mgd2VyZSBkcm9wcGVkLgogICAgICsrbV9sb2NrRHJvcERlcHRoOwot
ICAgIG1fbG9ja0NvdW50ID0gMDsKLSAgICBpZiAobV92bSkgewotICAgICAgICBtX3ZtLT5zdGFj
a1BvaW50ZXJBdFZNRW50cnkgPSBudWxscHRyOwotICAgICAgICBtX3ZtLT51cGRhdGVTdGFja0xp
bWl0V2l0aFJlc2VydmVkWm9uZVNpemUod3RmVGhyZWFkRGF0YSgpLnNhdmVkUmVzZXJ2ZWRab25l
U2l6ZSgpKTsKLSAgICB9Ci0gICAgbV9sb2NrLnVubG9jaygpOworCisgICAgdW5sb2NrKGxvY2tD
b3VudCk7CisKKyAgICBBU1NFUlQoIW1fdm0gfHwgIW1fdm0tPnN0YWNrUG9pbnRlckF0Vk1FbnRy
eSk7CiAgICAgcmV0dXJuIGxvY2tDb3VudDsKIH0KIAotdW5zaWduZWQgSlNMb2NrOjpkcm9wQWxs
TG9ja3NVbmNvbmRpdGlvbmFsbHkoU3BpbkxvY2smIHNwaW5Mb2NrKQordW5zaWduZWQgSlNMb2Nr
Ojpkcm9wQWxsTG9ja3NVbmNvbmRpdGlvbmFsbHkoKQogewotICAgIEFTU0VSVF9VTlVTRUQoc3Bp
bkxvY2ssIHNwaW5Mb2NrLklzSGVsZCgpKTsKLSAgICAvLyBDaGVjayBpZiB0aGlzIHRocmVhZCBp
cyBjdXJyZW50bHkgaG9sZGluZyB0aGUgbG9jay4KLSAgICAvLyBGSVhNRTogTWF5YmUgd2Ugd2Fu
dCB0byByZXF1aXJlIHRoaXMsIGd1YXJkIHdpdGggYW4gQVNTRVJUPwotICAgIHVuc2lnbmVkIGxv
Y2tDb3VudCA9IG1fbG9ja0NvdW50OwotICAgIGlmICghbG9ja0NvdW50IHx8IG1fb3duZXJUaHJl
YWQgIT0gV1RGOjpjdXJyZW50VGhyZWFkKCkpCi0gICAgICAgIHJldHVybiAwOworICAgIHVuc2ln
bmVkIGxvY2tDb3VudCA9IDA7CisgICAgeworICAgICAgICBTcGluTG9ja0hvbGRlciBob2xkZXIo
Jm1fc3BpbkxvY2spOworICAgICAgICBsb2NrQ291bnQgPSBtX2xvY2tDb3VudDsKKyAgICAgICAg
Ly8gQ2hlY2sgaWYgdGhpcyB0aHJlYWQgaXMgY3VycmVudGx5IGhvbGRpbmcgdGhlIGxvY2suCisg
ICAgICAgIC8vIEZJWE1FOiBNYXliZSB3ZSB3YW50IHRvIHJlcXVpcmUgdGhpcywgZ3VhcmQgd2l0
aCBhbiBBU1NFUlQ/CisgICAgICAgIGlmICghbG9ja0NvdW50IHx8IG1fb3duZXJUaHJlYWQgIT0g
V1RGOjpjdXJyZW50VGhyZWFkKCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAKICAg
ICBXVEZUaHJlYWREYXRhJiB0aHJlYWREYXRhID0gd3RmVGhyZWFkRGF0YSgpOwogICAgIHRocmVh
ZERhdGEuc2V0U2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkobV92bS0+c3RhY2tQb2ludGVyQXRW
TUVudHJ5KTsKQEAgLTI1MywzOCArMjcwLDIwIEBAIHVuc2lnbmVkIEpTTG9jazo6ZHJvcEFsbExv
Y2tzVW5jb25kaXRpb24KIAogICAgIC8vIG1fbG9ja0Ryb3BEZXB0aCBpcyBvbmx5IGluY3JlbWVu
dGVkIGlmIGFueSBsb2NrcyB3ZXJlIGRyb3BwZWQuCiAgICAgKyttX2xvY2tEcm9wRGVwdGg7Ci0g
ICAgbV9sb2NrQ291bnQgPSAwOwotICAgIGlmIChtX3ZtKSB7Ci0gICAgICAgIG1fdm0tPnN0YWNr
UG9pbnRlckF0Vk1FbnRyeSA9IG51bGxwdHI7Ci0gICAgICAgIG1fdm0tPnVwZGF0ZVN0YWNrTGlt
aXRXaXRoUmVzZXJ2ZWRab25lU2l6ZSh3dGZUaHJlYWREYXRhKCkuc2F2ZWRSZXNlcnZlZFpvbmVT
aXplKCkpOwotICAgIH0KLSAgICBtX2xvY2sudW5sb2NrKCk7CisKKyAgICB1bmxvY2sobG9ja0Nv
dW50KTsKKworICAgIEFTU0VSVCghbV92bSB8fCAhbV92bS0+c3RhY2tQb2ludGVyQXRWTUVudHJ5
KTsKICAgICByZXR1cm4gbG9ja0NvdW50OwogfQogCi12b2lkIEpTTG9jazo6Z3JhYkFsbExvY2tz
KHVuc2lnbmVkIGxvY2tDb3VudCwgU3BpbkxvY2smIHNwaW5Mb2NrKQordm9pZCBKU0xvY2s6Omdy
YWJBbGxMb2Nrcyh1bnNpZ25lZCBsb2NrQ291bnQpCiB7Ci0gICAgQVNTRVJUKHNwaW5Mb2NrLklz
SGVsZCgpKTsKICAgICAvLyBJZiBubyBsb2NrcyB3ZXJlIGRyb3BwZWQsIG5vdGhpbmcgdG8gZG8h
CiAgICAgaWYgKCFsb2NrQ291bnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFRocmVhZElkZW50
aWZpZXIgY3VycmVudFRocmVhZCA9IFdURjo6Y3VycmVudFRocmVhZCgpOwotICAgIC8vIENoZWNr
IGlmIHRoaXMgdGhyZWFkIGlzIGN1cnJlbnRseSBob2xkaW5nIHRoZSBsb2NrLgotICAgIC8vIEZJ
WE1FOiBNYXliZSB3ZSB3YW50IHRvIHByb2hpYml0IHRoaXMsIGd1YXJkIGFnYWluc3Qgd2l0aCBh
biBBU1NFUlQ/Ci0gICAgaWYgKG1fb3duZXJUaHJlYWQgPT0gY3VycmVudFRocmVhZCAmJiBtX2xv
Y2tDb3VudCkgewotICAgICAgICBtX2xvY2tDb3VudCArPSBsb2NrQ291bnQ7Ci0gICAgICAgIC0t
bV9sb2NrRHJvcERlcHRoOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc3BpbkxvY2su
VW5sb2NrKCk7Ci0gICAgbV9sb2NrLmxvY2soKTsKLSAgICBzcGluTG9jay5Mb2NrKCk7Ci0KLSAg
ICBtX293bmVyVGhyZWFkID0gY3VycmVudFRocmVhZDsKLSAgICBBU1NFUlQoIW1fbG9ja0NvdW50
KTsKLSAgICBtX2xvY2tDb3VudCA9IGxvY2tDb3VudDsKKyAgICBsb2NrKGxvY2tDb3VudCk7CiAg
ICAgLS1tX2xvY2tEcm9wRGVwdGg7CiAKICAgICBXVEZUaHJlYWREYXRhJiB0aHJlYWREYXRhID0g
d3RmVGhyZWFkRGF0YSgpOwpAQCAtMjk5LDEzICsyOTgsMTEgQEAgSlNMb2NrOjpEcm9wQWxsTG9j
a3M6OkRyb3BBbGxMb2NrcyhFeGVjUwogewogICAgIGlmICghbV92bSkKICAgICAgICAgcmV0dXJu
OwotICAgIFNwaW5Mb2NrJiBzcGluTG9jayA9IG1fdm0tPmFwaUxvY2soKS5tX3NwaW5Mb2NrOwot
ICAgIFNwaW5Mb2NrSG9sZGVyIGhvbGRlcigmc3BpbkxvY2spOwogCiAgICAgaWYgKGFsd2F5c0Ry
b3BMb2NrcykKLSAgICAgICAgbV9sb2NrQ291bnQgPSBtX3ZtLT5hcGlMb2NrKCkuZHJvcEFsbExv
Y2tzVW5jb25kaXRpb25hbGx5KHNwaW5Mb2NrKTsKKyAgICAgICAgbV9sb2NrQ291bnQgPSBtX3Zt
LT5hcGlMb2NrKCkuZHJvcEFsbExvY2tzVW5jb25kaXRpb25hbGx5KCk7CiAgICAgZWxzZQotICAg
ICAgICBtX2xvY2tDb3VudCA9IG1fdm0tPmFwaUxvY2soKS5kcm9wQWxsTG9ja3Moc3BpbkxvY2sp
OworICAgICAgICBtX2xvY2tDb3VudCA9IG1fdm0tPmFwaUxvY2soKS5kcm9wQWxsTG9ja3MoKTsK
IH0KIAogSlNMb2NrOjpEcm9wQWxsTG9ja3M6OkRyb3BBbGxMb2NrcyhWTSogdm0sIEFsd2F5c0Ry
b3BMb2Nrc1RhZyBhbHdheXNEcm9wTG9ja3MpCkBAIC0zMTQsMjIgKzMxMSwxOCBAQCBKU0xvY2s6
OkRyb3BBbGxMb2Nrczo6RHJvcEFsbExvY2tzKFZNKiB2CiB7CiAgICAgaWYgKCFtX3ZtKQogICAg
ICAgICByZXR1cm47Ci0gICAgU3BpbkxvY2smIHNwaW5Mb2NrID0gbV92bS0+YXBpTG9jaygpLm1f
c3BpbkxvY2s7Ci0gICAgU3BpbkxvY2tIb2xkZXIgaG9sZGVyKCZzcGluTG9jayk7CiAKICAgICBp
ZiAoYWx3YXlzRHJvcExvY2tzKQotICAgICAgICBtX2xvY2tDb3VudCA9IG1fdm0tPmFwaUxvY2so
KS5kcm9wQWxsTG9ja3NVbmNvbmRpdGlvbmFsbHkoc3BpbkxvY2spOworICAgICAgICBtX2xvY2tD
b3VudCA9IG1fdm0tPmFwaUxvY2soKS5kcm9wQWxsTG9ja3NVbmNvbmRpdGlvbmFsbHkoKTsKICAg
ICBlbHNlCi0gICAgICAgIG1fbG9ja0NvdW50ID0gbV92bS0+YXBpTG9jaygpLmRyb3BBbGxMb2Nr
cyhzcGluTG9jayk7CisgICAgICAgIG1fbG9ja0NvdW50ID0gbV92bS0+YXBpTG9jaygpLmRyb3BB
bGxMb2NrcygpOwogfQogCiBKU0xvY2s6OkRyb3BBbGxMb2Nrczo6fkRyb3BBbGxMb2NrcygpCiB7
CiAgICAgaWYgKCFtX3ZtKQogICAgICAgICByZXR1cm47Ci0gICAgU3BpbkxvY2smIHNwaW5Mb2Nr
ID0gbV92bS0+YXBpTG9jaygpLm1fc3BpbkxvY2s7Ci0gICAgU3BpbkxvY2tIb2xkZXIgaG9sZGVy
KCZzcGluTG9jayk7Ci0gICAgbV92bS0+YXBpTG9jaygpLmdyYWJBbGxMb2NrcyhtX2xvY2tDb3Vu
dCwgc3BpbkxvY2spOworICAgIG1fdm0tPmFwaUxvY2soKS5ncmFiQWxsTG9ja3MobV9sb2NrQ291
bnQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTG9jay5oCShyZXZpc2lvbiAxNjM3MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0xvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDkgKzExMywxMiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgfTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHVuc2ln
bmVkIGRyb3BBbGxMb2NrcyhTcGluTG9jayYpOwotICAgICAgICB1bnNpZ25lZCBkcm9wQWxsTG9j
a3NVbmNvbmRpdGlvbmFsbHkoU3BpbkxvY2smKTsKLSAgICAgICAgdm9pZCBncmFiQWxsTG9ja3Mo
dW5zaWduZWQgbG9ja0NvdW50LCBTcGluTG9jayYpOworICAgICAgICB2b2lkIGxvY2soaW50cHRy
X3QgbG9ja0NvdW50KTsKKyAgICAgICAgdm9pZCB1bmxvY2soaW50cHRyX3QgdW5sb2NrQ291bnQp
OworCisgICAgICAgIHVuc2lnbmVkIGRyb3BBbGxMb2NrcygpOworICAgICAgICB1bnNpZ25lZCBk
cm9wQWxsTG9ja3NVbmNvbmRpdGlvbmFsbHkoKTsKKyAgICAgICAgdm9pZCBncmFiQWxsTG9ja3Mo
dW5zaWduZWQgbG9ja0NvdW50KTsKIAogICAgICAgICBTcGluTG9jayBtX3NwaW5Mb2NrOwogICAg
ICAgICBNdXRleCBtX2xvY2s7Cg==
</data>
<flag name="review"
          id="247617"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223735</attachid>
            <date>2014-02-10 12:55:50 -0800</date>
            <delta_ts>2014-02-10 14:16:03 -0800</delta_ts>
            <desc>updated patch now that 128450 has landed.</desc>
            <filename>bug-128451.patch</filename>
            <type>text/plain</type>
            <size>4950</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYzODA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBA
CisyMDE0LTAyLTEwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
aGFuZ2UgSlNMb2NrOjpkcm9wQWxsTG9ja3MoKSBhbmQgZnJpZW5kcyB0byB1c2UgbG9jaygpIGFu
ZCB1bmxvY2soKS4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEyODQ1MT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHksIEpT
TG9jaydzIGRyb3BBbGxMb2NrcygpLCBkcm9wQWxsTG9ja3NVbmNvbmRpdGlvbmFsbHkoKSwgYW5k
CisgICAgICAgIGdyYWJBbGxMb2NrcygpIGltcGxlbWVudCBsb2NraW5nIC8gdW5sb2NraW5nIGJ5
IGR1cGxpY2F0aW5nIHRoZSBjb2RlIGZyb20KKyAgICAgICAgbG9jaygpIGFuZCB1bmxvY2soKS4g
SW5zdGVhZCwgdGhleSBzaG91bGQganVzdCBjYWxsIGxvY2soKSBhbmQgdW5sb2NrKCkuCisKKyAg
ICAgICAgKiBydW50aW1lL0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6bG9jayk6
CisgICAgICAgIChKU0M6OkpTTG9jazo6dW5sb2NrKToKKyAgICAgICAgLSBNb2RpZmllZCBsb2Nr
KCkgYW5kIHVubG9jaygpIGludG8gYSB2ZXJzaW9uIHRoYXQgdGFrZXMgYW4gZW50cnkgY291bnQK
KyAgICAgICAgICB0byBsb2NrIC8gdW5sb2NrLiBUaGUgcHJldmlvdXMgbG9jaygpIGFuZCB1bmxv
Y2soKSBub3cgY2FsbHMgdGhlc2UKKyAgICAgICAgICBuZXcgdmVyc2lvbnMgd2l0aCBhbiBlbnRy
eSBjb3VudCBvZiAxLgorCisgICAgICAgIChKU0M6OkpTTG9jazo6ZHJvcEFsbExvY2tzKToKKyAg
ICAgICAgKEpTQzo6SlNMb2NrOjpkcm9wQWxsTG9ja3NVbmNvbmRpdGlvbmFsbHkpOgorICAgICAg
ICAoSlNDOjpKU0xvY2s6OmdyYWJBbGxMb2Nrcyk6CisgICAgICAgIC0gRGVsZWdhdGUgdG8gdW5s
b2NrKCkgYW5kIGxvY2soKSBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIHRoZSBsb2NrIC8gdW5sb2Nr
CisgICAgICAgICAgY29kZS4KKyAgICAgICAgLSBUaGVyZSBhIHNvbWUgZGlmZmVyZW5jZXMgd2l0
aCBjYWxsaW5nIGxvY2soKSBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIGl0cworICAgICAgICAgIGNv
ZGUgaW4gZ3JhYkFsbExvY2soKSBpLmUuIGxvY2soKSBkb2VzIHRoZSBmb2xsb3dpbmcgYWRkaXRp
b25hbCB3b3JrOgorCisgICAgICAgICAgMS4gbG9jaygpIGRvZXMgYSByZS1lbnRyeSBjaGVjayB0
aGF0IGlzIG5vdCBuZWVkZWQgYnkgZ3JhYkFsbExvY2tzKCkuCisgICAgICAgICAgICAgSG93ZXZl
ciwgdGhpcyBpcyBlZmZlY3RpdmVseSBhIG5vLW9wIHNpbmNlIHdlIG5ldmVyIG93biB0aGUgSlNM
b2NrCisgICAgICAgICAgICAgYmVmb3JlIGNhbGxpbmcgZ3JhYkFsbExvY2tzKCkuCisKKyAgICAg
ICAgICAyLiBzZXQgVk0gc3RhY2tQb2ludGVyQXRWTUVudHJ5LgorICAgICAgICAgIDMuIHVwZGF0
ZSBWTSBzdGFja0xpbWl0IGFuZCByZXNlcnZlZFpvbmVTaXplLgorICAgICAgICAgIDQuIHNldCBW
TSBsYXN0U3RhY2tUb3AuCisgICAgICAgICAgICAgVGhlc2UgMyBzdGVwcyBhcmUganVzdCBidXN5
IHdvcmsgd2hpY2ggYXJlIGFsc28gZWZmZWN0aXZlIG5vLW9wcworICAgICAgICAgICAgIGJlY2F1
c2UgaW1tZWRpYXRlbHkgYWZ0ZXIgbG9jaygpIHJldHVybnMsIGdyYWJBbGxMb2NrcygpIHdpbGwg
d3JpdGUKKyAgICAgICAgICAgICBvdmVyIHRob3NlIHZhbHVlcyB3aXRoIHRoZWlyIHNhdmVkIHZl
cnNpb25zIGluIHRoZSB0aHJlYWREYXRhLgorCisgICAgICAgICogcnVudGltZS9KU0xvY2suaDoK
KwogMjAxNC0wMi0wOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIHVubmVjZXNzYXJ5IHNwaW5Mb2NrIGluIEpTTG9jay4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAkocmV2aXNpb24gMTYzODA0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAw
LDkgKzEwMCwxNSBAQCB2b2lkIEpTTG9jazo6d2lsbERlc3Ryb3lWTShWTSogdm0pCiAKIHZvaWQg
SlNMb2NrOjpsb2NrKCkKIHsKKyAgICBsb2NrKDEpOworfQorCit2b2lkIEpTTG9jazo6bG9jayhp
bnRwdHJfdCBsb2NrQ291bnQpCit7CisgICAgQVNTRVJUKGxvY2tDb3VudCA+IDApOwogICAgIFRo
cmVhZElkZW50aWZpZXIgY3VycmVudFRocmVhZCA9IFdURjo6Y3VycmVudFRocmVhZCgpOwogICAg
IGlmIChjdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpKSB7Ci0gICAgICAgIG1fbG9ja0NvdW50
Kys7CisgICAgICAgIG1fbG9ja0NvdW50ICs9IGxvY2tDb3VudDsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMTEwLDcgKzExNiw3IEBAIHZvaWQgSlNMb2NrOjpsb2NrKCkKIAogICAgIHNl
dE93bmVyVGhyZWFkKGN1cnJlbnRUaHJlYWQpOwogICAgIEFTU0VSVCghbV9sb2NrQ291bnQpOwot
ICAgIG1fbG9ja0NvdW50ID0gMTsKKyAgICBtX2xvY2tDb3VudCA9IGxvY2tDb3VudDsKIAogICAg
IFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3dGZUaHJlYWREYXRhKCk7CiAKQEAgLTEyNSw5
ICsxMzEsMTUgQEAgdm9pZCBKU0xvY2s6OmxvY2soKQogCiB2b2lkIEpTTG9jazo6dW5sb2NrKCkK
IHsKKyAgICB1bmxvY2soMSk7Cit9CisKK3ZvaWQgSlNMb2NrOjp1bmxvY2soaW50cHRyX3QgdW5s
b2NrQ291bnQpCit7CiAgICAgUkVMRUFTRV9BU1NFUlQoY3VycmVudFRocmVhZElzSG9sZGluZ0xv
Y2soKSk7CisgICAgQVNTRVJUKG1fbG9ja0NvdW50ID49IHVubG9ja0NvdW50KTsKIAotICAgIG1f
bG9ja0NvdW50LS07CisgICAgbV9sb2NrQ291bnQgLT0gdW5sb2NrQ291bnQ7CiAKICAgICBpZiAo
IW1fbG9ja0NvdW50KSB7CiAgICAgICAgIGlmIChtX3ZtKSB7CkBAIC0yMTgsMTMgKzIzMCw4IEBA
IHVuc2lnbmVkIEpTTG9jazo6ZHJvcEFsbExvY2tzKCkKICAgICArK21fbG9ja0Ryb3BEZXB0aDsK
IAogICAgIHVuc2lnbmVkIGRyb3BwZWRMb2NrQ291bnQgPSBtX2xvY2tDb3VudDsKLSAgICBtX2xv
Y2tDb3VudCA9IDA7Ci0gICAgaWYgKG1fdm0pIHsKLSAgICAgICAgbV92bS0+c3RhY2tQb2ludGVy
QXRWTUVudHJ5ID0gbnVsbHB0cjsKLSAgICAgICAgbV92bS0+dXBkYXRlU3RhY2tMaW1pdFdpdGhS
ZXNlcnZlZFpvbmVTaXplKHd0ZlRocmVhZERhdGEoKS5zYXZlZFJlc2VydmVkWm9uZVNpemUoKSk7
Ci0gICAgfQotICAgIHNldE93bmVyVGhyZWFkKDApOwotICAgIG1fbG9jay51bmxvY2soKTsKKyAg
ICB1bmxvY2soZHJvcHBlZExvY2tDb3VudCk7CisKICAgICByZXR1cm4gZHJvcHBlZExvY2tDb3Vu
dDsKIH0KIApAQCAtMjQ0LDEzICsyNTEsOCBAQCB1bnNpZ25lZCBKU0xvY2s6OmRyb3BBbGxMb2Nr
c1VuY29uZGl0aW9uCiAgICAgKyttX2xvY2tEcm9wRGVwdGg7CiAKICAgICB1bnNpZ25lZCBkcm9w
cGVkTG9ja0NvdW50ID0gbV9sb2NrQ291bnQ7Ci0gICAgbV9sb2NrQ291bnQgPSAwOwotICAgIGlm
IChtX3ZtKSB7Ci0gICAgICAgIG1fdm0tPnN0YWNrUG9pbnRlckF0Vk1FbnRyeSA9IG51bGxwdHI7
Ci0gICAgICAgIG1fdm0tPnVwZGF0ZVN0YWNrTGltaXRXaXRoUmVzZXJ2ZWRab25lU2l6ZSh3dGZU
aHJlYWREYXRhKCkuc2F2ZWRSZXNlcnZlZFpvbmVTaXplKCkpOwotICAgIH0KLSAgICBzZXRPd25l
clRocmVhZCgwKTsKLSAgICBtX2xvY2sudW5sb2NrKCk7CisgICAgdW5sb2NrKGRyb3BwZWRMb2Nr
Q291bnQpOworCiAgICAgcmV0dXJuIGRyb3BwZWRMb2NrQ291bnQ7CiB9CiAKQEAgLTI2MSwxMiAr
MjYzLDggQEAgdm9pZCBKU0xvY2s6OmdyYWJBbGxMb2Nrcyh1bnNpZ25lZCBkcm9wcAogICAgICAg
ICByZXR1cm47CiAKICAgICBBU1NFUlQoIWN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkpOwor
ICAgIGxvY2soZHJvcHBlZExvY2tDb3VudCk7CiAKLSAgICBtX2xvY2subG9jaygpOwotCi0gICAg
c2V0T3duZXJUaHJlYWQoV1RGOjpjdXJyZW50VGhyZWFkKCkpOwotICAgIEFTU0VSVCghbV9sb2Nr
Q291bnQpOwotICAgIG1fbG9ja0NvdW50ID0gZHJvcHBlZExvY2tDb3VudDsKICAgICAtLW1fbG9j
a0Ryb3BEZXB0aDsKIAogICAgIFdURlRocmVhZERhdGEmIHRocmVhZERhdGEgPSB3dGZUaHJlYWRE
YXRhKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAkocmV2aXNp
b24gMTYzODA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTExMiw2ICsxMTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
fTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgbG9jayhpbnRwdHJfdCBsb2NrQ291bnQp
OworICAgICAgICB2b2lkIHVubG9jayhpbnRwdHJfdCB1bmxvY2tDb3VudCk7CiAgICAgICAgIHZv
aWQgc2V0T3duZXJUaHJlYWQoVGhyZWFkSWRlbnRpZmllciBvd25lcikgeyBtX293bmVyVGhyZWFk
ID0gb3duZXI7IH0KIAogICAgICAgICB1bnNpZ25lZCBkcm9wQWxsTG9ja3MoKTsK
</data>
<flag name="review"
          id="247805"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>