<?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>71638</bug_id>
          
          <creation_ts>2011-11-06 14:55:26 -0800</creation_ts>
          <short_desc>[chromium] Fix handling of setNeedsCommit and setNeedsAnimate in threaded mode</short_desc>
          <delta_ts>2011-11-17 18:08:52 -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>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="Nat Duca">nduca</reporter>
          <assigned_to name="Nat Duca">nduca</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>496895</commentid>
    <comment_count>0</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-06 14:55:26 -0800</bug_when>
    <thetext>[chromium] Fix handling of setNeedsCommit and setNeedsAnimate in threaded mode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496896</commentid>
    <comment_count>1</comment_count>
      <attachid>113805</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-06 14:55:57 -0800</bug_when>
    <thetext>Created attachment 113805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496938</commentid>
    <comment_count>2</comment_count>
      <attachid>113805</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-06 18:25:16 -0800</bug_when>
    <thetext>Comment on attachment 113805
Patch

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

almost there but i see one possible issue

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:64
&gt; +    : m_animationRequested(false)

huh, so we had an m_animationRequested bool but weren&apos;t using it? odd

i think i&apos;d spell it m_animateRequested

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:202
&gt; +    if (m_animationRequested)

hm, this change means we might trigger 2 setNeedsCommit calls on the impl side whereas before we wouldn&apos;t. looking at the scheduler and state machine i think this will be fine but could you double check? i&apos;m thinking of this case in particular:

main thread: setNeedsAnimate() -&gt; post setNeedsAnimateOnImplThread
impl thread: setNeedsAnimateOnImplThread -&gt; BFAC sent
main thread: setNeedsCommit() -&gt; post setNeedsCommitOnImplThread, clears m_needsCommit on CCSchedulerStateMachine
impl thread: setNeedsCommitOnImplThread -&gt; sets need commit on scheduler even though a BFAC is pending
main thread: BFAC -&gt; animate, layout, post BFAC on impl thread
impl thread: run commit

at this point we&apos;ll still have m_needsCommit set on the scheduler state machine, and i think we&apos;ll do another spurious commit once the state machine goes back to idle.

i think the fix is to set m_needsCommit to false in CCSchedulerStateMachine::beginFrameComplete() instead of ::updateState()

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:377
&gt; +    m_layerTreeHost-&gt;applyScrollDeltas(*scrollInfo.get());

nit: i realize this was already here, but the .get() is redundant. operator* on WebKit smart pointer types does the right thing

&gt; Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp:647
&gt; +    virtual void drawLayersOnCCThread(CCLayerTreeHostImpl* impl)

i think test should really be checking for animateAndLayout() calls, not drawing. the fact that we draw multiple times on this test is a consequence of the fact that we always draw after commit, which IMO is a bug - we should draw when the commit does something requiring drawing, but otherwise no. setNeedsAnimate() should trigger an animateAndLayout() at the right time - commit/draw interaction is a different piece of the system</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505363</commentid>
    <comment_count>3</comment_count>
      <attachid>115711</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-17 17:08:15 -0800</bug_when>
    <thetext>Created attachment 115711
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505378</commentid>
    <comment_count>4</comment_count>
      <attachid>115711</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-17 17:28:44 -0800</bug_when>
    <thetext>Comment on attachment 115711
Patch

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

R=me

&gt; Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp:692
&gt; +    virtual void animateAndLayout(double impl)

parameter name doesn&apos;t make much sense here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505402</commentid>
    <comment_count>5</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-17 18:08:52 -0800</bug_when>
    <thetext>Committed r100708: &lt;http://trac.webkit.org/changeset/100708&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113805</attachid>
            <date>2011-11-06 14:55:57 -0800</date>
            <delta_ts>2011-11-17 17:08:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71638-20111106145556.patch</filename>
            <type>text/plain</type>
            <size>8213</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkyMzUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5MGQ3ZDE2MDZkYmQ5MjIw
NjUxNDQ0ODNjMzA5MDA2MWE2MjI0NzNjLi5lODg2MWJhNDk0MDM1YjUwMWJiZjA5YmRkYWIyODUw
YWI5MDFlYTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMTEtMDYgIE5hdCBE
dWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRml4IGhhbmRs
aW5nIG9mIHNldE5lZWRzQ29tbWl0IGFuZCBzZXROZWVkc0FuaW1hdGUgaW4gdGhyZWFkZWQgbW9k
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE2MzgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NUaHJlYWRQcm94eTo6Q0NUaHJlYWRQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RocmVhZFByb3h5Ojpjb21wb3NpdGVBbmRSZWFkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RocmVhZFByb3h5OjpzZXROZWVkc0FuaW1hdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJl
YWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdCk6CisKIDIwMTEtMTEtMDMgIEFubmEgQ2F2ZW5k
ZXIgIDxhbm5hY2NAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEltcGxlbWVudCBUZXh0VHJhY2tD
dWVMaXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAwMWM2Mzg5ZTg1ODQ1MTQ2ZDVm
ZmI5ZGNkOTUxMmY4MjA2OTIyOWUwLi5lNjE0YTYwZWQ5MWM3NGEyNjhjZWFlZjUwZTYwZDg1MzEx
N2M2ODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEx
LTExLTA2ICBOYXQgRHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEZpeCBoYW5kbGluZyBvZiBzZXROZWVkc0NvbW1pdCBhbmQgc2V0TmVlZHNBbmltYXRlIGlu
IHRocmVhZGVkIG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTcxNjM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6VGVz
dEhvb2tzOjphbmltYXRlQW5kTGF5b3V0KToKKyAgICAgICAgKFdURjo6TW9ja0xheWVyVHJlZUhv
c3RDbGllbnQ6OmFuaW1hdGVBbmRMYXlvdXQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhv
c3RUZXN0Ojpwb3N0U2V0TmVlZHNBbmltYXRlVG9NYWluVGhyZWFkKToKKyAgICAgICAgKFdURjo6
Q0NMYXllclRyZWVIb3N0VGVzdDo6ZGlzcGF0Y2hTZXROZWVkc0FuaW1hdGUpOgorICAgICAgICAo
V1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0U2V0TmVlZHNBbmltYXRlOjpDQ0xheWVyVHJlZUhvc3RU
ZXN0U2V0TmVlZHNBbmltYXRlKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdFNl
dE5lZWRzQW5pbWF0ZTo6YmVnaW5UZXN0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0
VGVzdFNldE5lZWRzQW5pbWF0ZTo6YW5pbWF0ZUFuZExheW91dCk6CisgICAgICAgIChXVEY6OkND
TGF5ZXJUcmVlSG9zdFRlc3RTZXROZWVkc0FuaW1hdGU6OmRyYXdMYXllcnNPbkNDVGhyZWFkKToK
KyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdFNldE5lZWRzQW5pbWF0ZTo6YWZ0ZXJU
ZXN0KToKKyAgICAgICAgKFdURjo6VEVTVF9GKToKKwogMjAxMS0xMS0wMyAgRmFkeSBTYW11ZWwg
IDxmc2FtdWVsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFJlZmFjdG9yIFdl
YkZyYW1lSW1wbDo6Y3JlYXRlRnJhbWVWaWV3KCkgdG8gdXNlIEZyYW1lOmNyZWF0ZVZpZXcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggMmE2YmRhMTEwOTgxMmMyNWZjMDY4NDNmYjFh
ZTRkMjQ0OTFiMDNkZS4uOGFkZjg2YzQzNTU4NThkMWNhNzU0MTM1ODNiMGJhNWY4YTQyNmQyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTYxLDcgKzYxLDggQEAgUGFzc093blB0
cjxDQ1Byb3h5PiBDQ1RocmVhZFByb3h5OjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0KiBsYXllclRy
ZWVIb3N0KQogfQogCiBDQ1RocmVhZFByb3h5OjpDQ1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9z
dCogbGF5ZXJUcmVlSG9zdCkKLSAgICA6IG1fY29tbWl0UmVxdWVzdGVkKGZhbHNlKQorICAgIDog
bV9hbmltYXRpb25SZXF1ZXN0ZWQoZmFsc2UpCisgICAgLCBtX2NvbW1pdFJlcXVlc3RlZChmYWxz
ZSkKICAgICAsIG1fbGF5ZXJUcmVlSG9zdChsYXllclRyZWVIb3N0KQogICAgICwgbV9jb21wb3Np
dG9ySWRlbnRpZmllcigtMSkKICAgICAsIG1fc3RhcnRlZChmYWxzZSkKQEAgLTkxLDcgKzkyLDcg
QEAgYm9vbCBDQ1RocmVhZFByb3h5Ojpjb21wb3NpdGVBbmRSZWFkYmFjayh2b2lkICpwaXhlbHMs
IGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgQVNTRVJUKG1fbGF5ZXJUcmVlSG9zdCk7CiAKICAg
ICAvLyBJZiBhIGNvbW1pdCBpcyBwZW5kaW5nLCBwZXJmb3JtIHRoZSBjb21taXQgZmlyc3QuCi0g
ICAgaWYgKG1fY29tbWl0UmVxdWVzdGVkKSAgeworICAgIGlmIChtX2FuaW1hdGlvblJlcXVlc3Rl
ZCB8fCBtX2NvbW1pdFJlcXVlc3RlZCkgIHsKICAgICAgICAgLy8gVGhpcyBiaXQgb2YgY29kZSBp
cyB1Z2xpZXIgdGhhbiBpdCBzaG91bGQgYmUgYmVjYXVzZSByZXR1cm5pbmcKICAgICAgICAgLy8g
cG9pbnRlcnMgdmlhIHRoZSBDQ1RocmVhZCB0YXNrIG1vZGVsIGlzIHJlYWxseSBtZXNzeS4gRWZm
ZWN0aXZlbHksIHdlCiAgICAgICAgIC8vIGFyZSBtYWtpbmcgYSBibG9ja2luZyBjYWxsIHRvIGNy
ZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25JbXBsVGhyZWFkLApAQCAtMTk4LDExICsxOTks
MTEgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojpsb3NlQ29tcG9zaXRvckNvbnRleHQoaW50IG51bVRp
bWVzKQogdm9pZCBDQ1RocmVhZFByb3h5OjpzZXROZWVkc0FuaW1hdGUoKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKG1fY29tbWl0UmVxdWVzdGVkKQorICAgIGlmICht
X2FuaW1hdGlvblJlcXVlc3RlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVFJBQ0VfRVZFTlQo
IkNDVGhyZWFkUHJveHk6OnNldE5lZWRzQW5pbWF0aW9uIiwgdGhpcywgMCk7Ci0gICAgbV9jb21t
aXRSZXF1ZXN0ZWQgPSB0cnVlOworICAgIG1fYW5pbWF0aW9uUmVxdWVzdGVkID0gdHJ1ZTsKICAg
ICBzX2NjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFk
UHJveHk6OnNldE5lZWRzQW5pbWF0ZU9uSW1wbFRocmVhZCkpOwogfQogCkBAIC0zNTIsOSArMzUz
LDYgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5j
ZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gU2Nyb2xsIGRlbHRhcyBuZWVkIHRvIGJlIGFwcGxp
ZWQgZXZlbiBpZiB0aGUgY29tbWl0IHdpbGwgYmUgZHJvcHBlZC4KLSAgICBtX2xheWVyVHJlZUhv
c3QtPmFwcGx5U2Nyb2xsRGVsdGFzKCpzY3JvbGxJbmZvLmdldCgpKTsKLQogICAgIC8vIERyb3Ag
YmVnaW5GcmFtZUFuZENvbW1pdCBjYWxscyB0aGF0IG9jY3VyIG91dCBvZiBzZXF1ZW5jZS4gU2Vl
IGNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25JbXBsVGhyZWFkIGZvcgogICAgIC8vIGFu
IGV4cGxhbmF0aW9uIG9mIGhvdyBvdXQtb2Ytc2VxdWVuY2UgYmVnaW5GcmFtZUFuZENvbW1pdCB0
YXNrcyBjYW4gb2NjdXIuCiAgICAgaWYgKHNlcXVlbmNlTnVtYmVyIDwgbV9sYXN0RXhlY3V0ZWRC
ZWdpbkZyYW1lQW5kQ29tbWl0U2VxdWVuY2VOdW1iZXIpIHsKQEAgLTM2Myw2ICszNjEsMjEgQEAg
dm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJl
ciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KICAgICB9CiAgICAgbV9sYXN0RXhlY3V0ZWRCZWdpbkZy
YW1lQW5kQ29tbWl0U2VxdWVuY2VOdW1iZXIgPSBzZXF1ZW5jZU51bWJlcjsKIAorICAgIC8vIERv
IG5vdCBub3RpZnkgdGhlIGltcGwgdGhyZWFkIG9mIGNvbW1pdCByZXF1ZXN0cyB0aGF0IG9jY3Vy
IGR1cmluZworICAgIC8vIHRoZSBhcHBseS9hbmltYXRlL2xheW91dCBwYXJ0IG9mIHRoZSBiZWdp
bkZyYW1lQW5kQ29tbWl0IHByb2Nlc3Mgc2luY2UKKyAgICAvLyB0aG9zZSBjb21taXQgcmVxdWVz
dHMgd2lsbCBnZXQgcGFpbnRlZCBpbW1lZGlhdGVseS4gT25jZSB3ZSBoYXZlIGRvbmUKKyAgICAv
LyB0aGUgcGFpbnQsIG1fY29tbWl0UmVxdWVzdGVkIHdpbGwgYmUgc2V0IHRvIGZhbHNlIHRvIGFs
bG93IG5ldyBjb21taXQKKyAgICAvLyByZXF1ZXN0cyB0byBiZSBzY2hlZHVsZWQuCisgICAgbV9j
b21taXRSZXF1ZXN0ZWQgPSB0cnVlOworCisgICAgLy8gT24gdGhlIG90aGVyIGhhbmQsIHRoZSBh
bmltYXRpb25SZXF1ZXN0ZWQgZmxhZyBuZWVkcyB0byBiZSBjbGVhcmVkCisgICAgLy8gaGVyZSBz
byB0aGF0IGFueSBhbmltYXRpb24gcmVxdWVzdHMgZ2VuZXJhdGVkIGJ5IHRoZSBhcHBseSBvciBh
bmltYXRlCisgICAgLy8gY2FsbGJhY2tzIHdpbGwgdHJpZ2dlciBhbm90aGVyIGZyYW1lLgorICAg
IG1fYW5pbWF0aW9uUmVxdWVzdGVkID0gZmFsc2U7CisKKyAgICAvLyBTY3JvbGwgZGVsdGFzIG5l
ZWQgdG8gYmUgYXBwbGllZCBldmVuIGlmIHRoZSBjb21taXQgd2lsbCBiZSBkcm9wcGVkLgorICAg
IG1fbGF5ZXJUcmVlSG9zdC0+YXBwbHlTY3JvbGxEZWx0YXMoKnNjcm9sbEluZm8uZ2V0KCkpOwor
CiAgICAgLy8gRklYTUU6IHJlY3JlYXRlIHRoZSBjb250ZXh0IGlmIGl0IHdhcyByZXF1ZXN0ZWQg
YnkgdGhlIGltcGwgdGhyZWFkCiAgICAgewogICAgICAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRy
ZWVIb3N0OjphbmltYXRlQW5kTGF5b3V0IiwgdGhpcywgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCBmM2YwNDgy
ZjZiNGRhZmZiMGZmOWI4NWY2YTZmYWNmZDQ2MzdiNzJhLi40ZDIxZjY1MDgxMTg5ZGZiOTVmYTcz
ODM5YjM5ZmQ0NTg0YjQzN2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTU3LDYgKzU3LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBiZWdpbkNvbW1pdE9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1w
bCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXll
clRyZWVIb3N0SW1wbCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVh
ZChDQ0xheWVyVHJlZUhvc3RJbXBsKikgeyB9CisgICAgdmlydHVhbCB2b2lkIGFuaW1hdGVBbmRM
YXlvdXQoZG91YmxlIGZyYW1lQmVnaW5UaW1lKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlT
Y3JvbGxEZWx0YShjb25zdCBJbnRTaXplJikgeyB9CiB9OwogCkBAIC0xNTAsNiArMTUxLDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGVBbmRMYXlvdXQoZG91YmxlIGZyYW1l
QmVnaW5UaW1lKQogICAgIHsKKyAgICAgICAgbV90ZXN0SG9va3MtPmFuaW1hdGVBbmRMYXlvdXQo
ZnJhbWVCZWdpblRpbWUpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbERl
bHRhKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhKQpAQCAtMTk4LDYgKzIwMCwxMSBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGVuZFRlc3QoKTsKIAorICAgIHZvaWQgcG9zdFNldE5lZWRzQW5pbWF0
ZVRvTWFpblRocmVhZCgpCisgICAgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKENDTGF5ZXJU
cmVlSG9zdFRlc3Q6OmRpc3BhdGNoU2V0TmVlZHNBbmltYXRlLCB0aGlzKTsKKyAgICB9CisKICAg
ICB2b2lkIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpCiAgICAgewogICAgICAgICBj
YWxsT25NYWluVGhyZWFkKENDTGF5ZXJUcmVlSG9zdFRlc3Q6OmRpc3BhdGNoU2V0TmVlZHNDb21t
aXQsIHRoaXMpOwpAQCAtMjUyLDYgKzI1OSwxNSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHRlc3Qt
Pm1fbGF5ZXJUcmVlSG9zdC5jbGVhcigpOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIGRpc3Bh
dGNoU2V0TmVlZHNBbmltYXRlKHZvaWQqIHNlbGYpCisgICAgeworICAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICAgIENDTGF5ZXJUcmVlSG9zdFRlc3QqIHRlc3QgPSBzdGF0aWNfY2Fz
dDxDQ0xheWVyVHJlZUhvc3RUZXN0Kj4oc2VsZik7CisgICAgICBBU1NFUlQodGVzdCk7CisgICAg
ICBpZiAodGVzdC0+bV9sYXllclRyZWVIb3N0KQorICAgICAgICAgIHRlc3QtPm1fbGF5ZXJUcmVl
SG9zdC0+c2V0TmVlZHNBbmltYXRlKCk7CisgICAgfQorCiAgICAgc3RhdGljIHZvaWQgZGlzcGF0
Y2hTZXROZWVkc0NvbW1pdCh2b2lkKiBzZWxmKQogICAgIHsKICAgICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CkBAIC02MTEsNiArNjI3LDQzIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0
U2V0TmVlZHNSZWRyYXcsIHJ1bk11bHRpVGhyZWFkKQogICAgIHJ1blRlc3RUaHJlYWRlZCgpOwog
fQogCisvLyBzZXROZWVkc0FuaW1hdGUgaXNzdWVkIGluc2lkZSB0aGUgYW5pbWF0ZSBjYWxsYmFj
ayBzaG91bGQgbGVhZCB0byBkcmF3aW5nLgorY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdFNldE5l
ZWRzQW5pbWF0ZSA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RUZXN0VGhyZWFkT25seSB7CitwdWJs
aWM6CisgICAgQ0NMYXllclRyZWVIb3N0VGVzdFNldE5lZWRzQW5pbWF0ZSgpCisgICAgICAgIDog
bV9udW1EcmF3cygwKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0
KCkKKyAgICB7CisgICAgICAgIHBvc3RTZXROZWVkc0FuaW1hdGVUb01haW5UaHJlYWQoKTsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUFuZExheW91dChkb3VibGUgaW1wbCkKKyAg
ICB7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNBbmltYXRlKCk7CisgICAgfQor
ICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBs
KiBpbXBsKQorICAgIHsKKyAgICAgICAgbV9udW1EcmF3cysrOworICAgICAgICBpZiAobV9udW1E
cmF3cyA9PSAyKQorICAgICAgICAgICAgZW5kVGVzdCgpOworICAgIH0KKworICAgIHZpcnR1YWwg
dm9pZCBhZnRlclRlc3QoKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgaW50IG1fbnVt
RHJhd3M7Cit9OworCitURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdFNldE5lZWRzQW5pbWF0ZSwg
cnVuTXVsdGlUaHJlYWQpCit7CisgICAgcnVuVGVzdFRocmVhZGVkKCk7Cit9CisKIGNsYXNzIEND
TGF5ZXJUcmVlSG9zdFRlc3RTY3JvbGxTaW1wbGUgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVz
dFRocmVhZE9ubHkgewogcHVibGljOgogICAgIENDTGF5ZXJUcmVlSG9zdFRlc3RTY3JvbGxTaW1w
bGUoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115711</attachid>
            <date>2011-11-17 17:08:15 -0800</date>
            <delta_ts>2011-11-17 17:28:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71638-20111117170814.patch</filename>
            <type>text/plain</type>
            <size>11662</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzdlY2M3ODE3Yzk3MjNi
ZjA4YTEzODVmYzJlYjQxN2M2MWM3ZmNjNy4uY2QwMWUxNDc2NGY5NDZkNjIzMGQxZWIyYTIzNWJi
ODFkODYxNWFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDExLTExLTA2ICBOYXQg
RHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEZpeCBoYW5k
bGluZyBvZiBzZXROZWVkc0NvbW1pdCBhbmQgc2V0TmVlZHNBbmltYXRlIGluIHRocmVhZGVkIG1v
ZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNjM4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGhyZWFkUHJveHk6OkNDVGhyZWFkUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6c2V0TmVlZHNBbmltYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhy
ZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQpOgorCiAyMDExLTExLTE3ICBTaGF3biBTaW5n
aCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRml4IG1p
bm9yIHN0eWxlIG5pdCBpbiBDQ0xheWVySW1wbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRl
eCAxNDBjMWUyNTA1NGQ5OTQwMjMzMTA2ZTEzY2MzNDgwNzFhMjBiNmMwLi4wNzkyOTgwOTYwZWY5
Y2Y1YjEwYWM1OGMzMWEwZTE3ZDIzODAzMGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIxIEBACisyMDExLTExLTA2ICBOYXQgRHVjYSAgPG5kdWNhQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBbY2hyb21pdW1dIEZpeCBoYW5kbGluZyBvZiBzZXROZWVkc0NvbW1pdCBh
bmQgc2V0TmVlZHNBbmltYXRlIGluIHRocmVhZGVkIG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNjM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNw
cDoKKyAgICAgICAgKFRlc3RIb29rczo6YW5pbWF0ZUFuZExheW91dCk6CisgICAgICAgIChNb2Nr
TGF5ZXJUcmVlSG9zdENsaWVudDo6YW5pbWF0ZUFuZExheW91dCk6CisgICAgICAgIChDQ0xheWVy
VHJlZUhvc3RUZXN0Ojpwb3N0U2V0TmVlZHNBbmltYXRlVG9NYWluVGhyZWFkKToKKyAgICAgICAg
KENDTGF5ZXJUcmVlSG9zdFRlc3Q6OmRpc3BhdGNoU2V0TmVlZHNBbmltYXRlKToKKyAgICAgICAg
KENDTGF5ZXJUcmVlSG9zdFRlc3RTZXROZWVkc0FuaW1hdGU6OkNDTGF5ZXJUcmVlSG9zdFRlc3RT
ZXROZWVkc0FuaW1hdGUpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0VGVzdFNldE5lZWRzQW5p
bWF0ZTo6YmVnaW5UZXN0KToKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdFRlc3RTZXROZWVkc0Fu
aW1hdGU6OmFuaW1hdGVBbmRMYXlvdXQpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0VGVzdFNl
dE5lZWRzQW5pbWF0ZTo6ZHJhd0xheWVyc09uQ0NUaHJlYWQpOgorICAgICAgICAoQ0NMYXllclRy
ZWVIb3N0VGVzdFNldE5lZWRzQW5pbWF0ZTo6YWZ0ZXJUZXN0KToKKwogMjAxMS0xMS0xNyAgUGV0
ZXIgS2FzdGluZyAgPHBrYXN0aW5nQGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjEwMDU3Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggNzQ3
YzhkZjEyY2UyYTkxODY4OWExNmFkNzcyZWZlZWFlZmU3NzBlYy4uNWJhYmNlM2Q0NTlmOTM2Y2Vk
NWRmYTU4YTAxZmM4ZmVlMzkyNjQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAg
LTUwLDcgKzUwLDggQEAgUGFzc093blB0cjxDQ1Byb3h5PiBDQ1RocmVhZFByb3h5OjpjcmVhdGUo
Q0NMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KQogfQogCiBDQ1RocmVhZFByb3h5OjpDQ1Ro
cmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCkKLSAgICA6IG1fY29tbWl0
UmVxdWVzdGVkKGZhbHNlKQorICAgIDogbV9hbmltYXRlUmVxdWVzdGVkKGZhbHNlKQorICAgICwg
bV9jb21taXRSZXF1ZXN0ZWQoZmFsc2UpCiAgICAgLCBtX2xheWVyVHJlZUhvc3QobGF5ZXJUcmVl
SG9zdCkKICAgICAsIG1fY29tcG9zaXRvcklkZW50aWZpZXIoLTEpCiAgICAgLCBtX3N0YXJ0ZWQo
ZmFsc2UpCkBAIC0xODcsMTIgKzE4OCwxMiBAQCB2b2lkIENDVGhyZWFkUHJveHk6Omxvc2VDb21w
b3NpdG9yQ29udGV4dChpbnQgbnVtVGltZXMpCiB2b2lkIENDVGhyZWFkUHJveHk6OnNldE5lZWRz
QW5pbWF0ZSgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAobV9jb21t
aXRSZXF1ZXN0ZWQpCisgICAgaWYgKG1fYW5pbWF0ZVJlcXVlc3RlZCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNldE5lZWRzQW5pbWF0aW9uIiwg
dGhpcywgMCk7Ci0gICAgbV9jb21taXRSZXF1ZXN0ZWQgPSB0cnVlOwotICAgIENDUHJveHk6Omlt
cGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFBy
b3h5OjpzZXROZWVkc0FuaW1hdGVPbkltcGxUaHJlYWQpKTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NU
aHJlYWRQcm94eTo6c2V0TmVlZHNBbmltYXRlIiwgdGhpcywgMCk7CisgICAgbV9hbmltYXRlUmVx
dWVzdGVkID0gdHJ1ZTsKKyAgICBzZXROZWVkc0NvbW1pdCgpOwogfQogCiB2b2lkIENDVGhyZWFk
UHJveHk6OnNldE5lZWRzQ29tbWl0KCkKQEAgLTIwNiwxMyArMjA3LDYgQEAgdm9pZCBDQ1RocmVh
ZFByb3h5OjpzZXROZWVkc0NvbW1pdCgpCiAgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0
VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnNldE5lZWRzQ29t
bWl0T25JbXBsVGhyZWFkKSk7CiB9CiAKLXZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0TmVlZHNBbmlt
YXRlT25JbXBsVGhyZWFkKCkKLXsKLSAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwotICAgIFRS
QUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCIsIHRo
aXMsIDApOwotICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXROZWVkc0FuaW1hdGUoKTsK
LX0KLQogdm9pZCBDQ1RocmVhZFByb3h5OjpvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJl
YWQoKQogewogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CkBAIC0zNDMsOSArMzM3LDYgQEAg
dm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJl
ciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgLy8gU2Nyb2xsIGRlbHRhcyBuZWVkIHRvIGJlIGFwcGxpZWQgZXZl
biBpZiB0aGUgY29tbWl0IHdpbGwgYmUgZHJvcHBlZC4KLSAgICBtX2xheWVyVHJlZUhvc3QtPmFw
cGx5U2Nyb2xsQW5kU2NhbGUoKnNjcm9sbEluZm8uZ2V0KCkpOwotCiAgICAgLy8gRHJvcCBiZWdp
bkZyYW1lQW5kQ29tbWl0IGNhbGxzIHRoYXQgb2NjdXIgb3V0IG9mIHNlcXVlbmNlLiBTZWUgY3Jl
YXRlQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tPbkltcGxUaHJlYWQgZm9yCiAgICAgLy8gYW4gZXhw
bGFuYXRpb24gb2YgaG93IG91dC1vZi1zZXF1ZW5jZSBiZWdpbkZyYW1lQW5kQ29tbWl0IHRhc2tz
IGNhbiBvY2N1ci4KICAgICBpZiAoc2VxdWVuY2VOdW1iZXIgPCBtX2xhc3RFeGVjdXRlZEJlZ2lu
RnJhbWVBbmRDb21taXRTZXF1ZW5jZU51bWJlcikgewpAQCAtMzU0LDYgKzM0NSwyMiBAQCB2b2lk
IENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBk
b3VibGUgZnJhbWVCZWdpblRpbQogICAgIH0KICAgICBtX2xhc3RFeGVjdXRlZEJlZ2luRnJhbWVB
bmRDb21taXRTZXF1ZW5jZU51bWJlciA9IHNlcXVlbmNlTnVtYmVyOwogCisgICAgLy8gRG8gbm90
IG5vdGlmeSB0aGUgaW1wbCB0aHJlYWQgb2YgY29tbWl0IHJlcXVlc3RzIHRoYXQgb2NjdXIgZHVy
aW5nCisgICAgLy8gdGhlIGFwcGx5L2FuaW1hdGUvbGF5b3V0IHBhcnQgb2YgdGhlIGJlZ2luRnJh
bWVBbmRDb21taXQgcHJvY2VzcyBzaW5jZQorICAgIC8vIHRob3NlIGNvbW1pdCByZXF1ZXN0cyB3
aWxsIGdldCBwYWludGVkIGltbWVkaWF0ZWx5LiBPbmNlIHdlIGhhdmUgZG9uZQorICAgIC8vIHRo
ZSBwYWludCwgbV9jb21taXRSZXF1ZXN0ZWQgd2lsbCBiZSBzZXQgdG8gZmFsc2UgdG8gYWxsb3cg
bmV3IGNvbW1pdAorICAgIC8vIHJlcXVlc3RzIHRvIGJlIHNjaGVkdWxlZC4KKyAgICBtX2NvbW1p
dFJlcXVlc3RlZCA9IHRydWU7CisKKyAgICAvLyBPbiB0aGUgb3RoZXIgaGFuZCwgdGhlIGFuaW1h
dGlvblJlcXVlc3RlZCBmbGFnIG5lZWRzIHRvIGJlIGNsZWFyZWQKKyAgICAvLyBoZXJlIHNvIHRo
YXQgYW55IGFuaW1hdGlvbiByZXF1ZXN0cyBnZW5lcmF0ZWQgYnkgdGhlIGFwcGx5IG9yIGFuaW1h
dGUKKyAgICAvLyBjYWxsYmFja3Mgd2lsbCB0cmlnZ2VyIGFub3RoZXIgZnJhbWUuCisgICAgbV9h
bmltYXRlUmVxdWVzdGVkID0gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogdGVjaG5pY2FsbHksIHNj
cm9sbCBkZWx0YXMgbmVlZCB0byBiZSBhcHBsaWVkIGZvciBkcm9wcGVkIGNvbW1pdHMgYXMgd2Vs
bC4KKyAgICAvLyBSZS1kbyB0aGUgY29tbWl0IGZsb3cgc28gdGhhdCB3ZSBkb24ndCBzZW5kIHRo
ZSBzY3JvbGxJbmZvIG9uIHRoZSBCRkFDIG1lc3NhZ2UuCisgICAgbV9sYXllclRyZWVIb3N0LT5h
cHBseVNjcm9sbEFuZFNjYWxlKCpzY3JvbGxJbmZvKTsKKwogICAgIC8vIEZJWE1FOiByZWNyZWF0
ZSB0aGUgY29udGV4dCBpZiBpdCB3YXMgcmVxdWVzdGVkIGJ5IHRoZSBpbXBsIHRocmVhZAogICAg
IHsKICAgICAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6YW5pbWF0ZUFuZExheW91
dCIsIHRoaXMsIDApOwpAQCAtMzY5LDExICszNzYsMTcgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojpi
ZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5U
aW0KIAogICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CiAKKyAgICAvLyBCZWZv
cmUgYXBwbHlpbmcgc2Nyb2xscyBhbmQgY2FsbGluZyBhbmltYXRlLCB3ZSBzZXQgbV9hbmltYXRl
UmVxdWVzdGVkIHRvIGZhbHNlLgorICAgIC8vIElmIGl0IGlzIHRydWUgbm93LCBpdCBtZWFucyBz
ZXROZWVkQW5pbWF0ZSB3YXMgY2FsbGVkIGFnYWluLiBDYWxsIHNldE5lZWRzQ29tbWl0CisgICAg
Ly8gbm93IHNvIHRoYXQgd2UgZ2V0IGJlZ2luIGZyYW1lIHdoZW4gdGhpcyBvbmUgaXMgZG9uZS4K
KyAgICBpZiAobV9hbmltYXRlUmVxdWVzdGVkKQorICAgICAgICBzZXROZWVkc0NvbW1pdCgpOwor
CisgICAgLy8gTm90aWZ5IHRoZSBpbXBsIHRocmVhZCB0aGF0IHRoZSBiZWdpbkZyYW1lIGhhcyBj
b21wbGV0ZWQuIFRoaXMgd2lsbAorICAgIC8vIGJlZ2luIHRoZSBjb21taXQgcHJvY2Vzcywgd2hp
Y2ggaXMgYmxvY2tpbmcgZnJvbSB0aGUgbWFpbiB0aHJlYWQncworICAgIC8vIHBvaW50IG9mIHZp
ZXcsIGJ1dCBhc3luY2hyb25vdXNseSBwZXJmb3JtZWQgb24gdGhlIGltcGwgdGhyZWFkLAorICAg
IC8vIGNvb3JkaW5hdGVkIGJ5IHRoZSBDQ1NjaGVkdWxlci4KICAgICB7Ci0gICAgICAgIC8vIE5v
dGlmeSB0aGUgaW1wbCB0aHJlYWQgdGhhdCB0aGUgYmVnaW5GcmFtZSBoYXMgY29tcGxldGVkLiBU
aGlzIHdpbGwKLSAgICAgICAgLy8gYmVnaW4gdGhlIGNvbW1pdCBwcm9jZXNzLCB3aGljaCBpcyBi
bG9ja2luZyBmcm9tIHRoZSBtYWluIHRocmVhZCdzCi0gICAgICAgIC8vIHBvaW50IG9mIHZpZXcs
IGJ1dCBhc3luY2hyb25vdXNseSBwZXJmb3JtZWQgb24gdGhlIGltcGwgdGhyZWFkLAotICAgICAg
ICAvLyBjb29yZGluYXRlZCBieSB0aGUgQ0NTY2hlZHVsZXIuCiAgICAgICAgIFRSQUNFX0VWRU5U
KCJjb21taXQiLCB0aGlzLCAwKTsKICAgICAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlv
bjsKICAgICAgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVh
ZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVh
ZCwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmY29tcGxldGlvbikpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuaAppbmRleCBlYmY0MzI4ODM5YzJhYTQxYjI5OTQyMjRiODE5Y2I4NGQzNTE0MzM1Li4x
ZGYzNzQ2YzVkYzAxMzRhMzI0ZTRhYzg2NDIzMDQ1MjkzM2E5OGZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5oCkBAIC05NywxMiArOTcsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpbmlzaEFs
bFJlbmRlcmluZ09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwogICAgIHZvaWQgaW5p
dGlhbGl6ZUltcGxPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAgICB2b2lkIGlu
aXRpYWxpemVMYXllclJlbmRlcmVyT25JbXBsVGhyZWFkKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0ND
b21wbGV0aW9uRXZlbnQqLCBib29sKiBpbml0aWFsaXplU3VjY2VlZGVkLCBMYXllclJlbmRlcmVy
Q2FwYWJpbGl0aWVzKiwgaW50KiBjb21wb3NpdG9ySWRlbnRpZmllcik7Ci0gICAgdm9pZCBzZXRO
ZWVkc0FuaW1hdGVPbkltcGxUaHJlYWQoKTsKICAgICB2b2lkIHNldFZpc2libGVPbkltcGxUaHJl
YWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBib29sIHZpc2libGUpOwogICAgIHZvaWQgbGF5ZXJUcmVl
SG9zdENsb3NlZE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwogCiAgICAgLy8gQWNj
ZXNzZWQgb24gbWFpbiB0aHJlYWQgb25seS4KLSAgICBib29sIG1fYW5pbWF0aW9uUmVxdWVzdGVk
OworICAgIGJvb2wgbV9hbmltYXRlUmVxdWVzdGVkOwogICAgIGJvb2wgbV9jb21taXRSZXF1ZXN0
ZWQ7CiAgICAgQ0NMYXllclRyZWVIb3N0KiBtX2xheWVyVHJlZUhvc3Q7CiAgICAgaW50IG1fY29t
cG9zaXRvcklkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCBkMWRjZjVkODY2ZjJmMTVjMTBlMjVhZjJm
YWVlMjE1YmU5M2IyNzc5Li4yZWYzYzY2ZDM5Y2Y5NWU4OTEwZWNkZTg2YjU0NTgyOTEyN2RlMDVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVI
b3N0VGVzdC5jcHAKQEAgLTU3LDYgKzU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBj
b21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgSW50U2l6ZSYsIGZs
b2F0KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUFuZExheW91dChkb3VibGUgZnJhbWVC
ZWdpblRpbWUpIHsgfQogfTsKIAogLy8gQWRhcHRzIENDTGF5ZXJUcmVlSG9zdEltcGwgZm9yIHRl
c3QuIFJ1bnMgcmVhbCBjb2RlLCB0aGVuIGludm9rZXMgdGVzdCBob29rcy4KQEAgLTE0OSw2ICsx
NTAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUFuZExheW91dChkb3Vi
bGUgZnJhbWVCZWdpblRpbWUpCiAgICAgeworICAgICAgICBtX3Rlc3RIb29rcy0+YW5pbWF0ZUFu
ZExheW91dChmcmFtZUJlZ2luVGltZSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGFwcGx5
U2Nyb2xsQW5kU2NhbGUoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHNjYWxlKQpA
QCAtMjAxLDYgKzIwMywxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGVuZFRlc3QoKTsKIAorICAg
IHZvaWQgcG9zdFNldE5lZWRzQW5pbWF0ZVRvTWFpblRocmVhZCgpCisgICAgeworICAgICAgICBj
YWxsT25NYWluVGhyZWFkKENDTGF5ZXJUcmVlSG9zdFRlc3Q6OmRpc3BhdGNoU2V0TmVlZHNBbmlt
YXRlLCB0aGlzKTsKKyAgICB9CisKICAgICB2b2lkIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRo
cmVhZCgpCiAgICAgewogICAgICAgICBjYWxsT25NYWluVGhyZWFkKENDTGF5ZXJUcmVlSG9zdFRl
c3Q6OmRpc3BhdGNoU2V0TmVlZHNDb21taXQsIHRoaXMpOwpAQCAtMjExLDYgKzIxOCwxMiBAQCBw
dWJsaWM6CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoQ0NMYXllclRyZWVIb3N0VGVzdDo6ZGlz
cGF0Y2hTZXROZWVkc1JlZHJhdywgdGhpcyk7CiAgICAgfQogCisgICAgdm9pZCBwb3N0U2V0TmVl
ZHNBbmltYXRlQW5kQ29tbWl0VG9NYWluVGhyZWFkKCkKKyAgICB7CisgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoQ0NMYXllclRyZWVIb3N0VGVzdDo6ZGlzcGF0Y2hTZXROZWVkc0FuaW1hdGVBbmRD
b21taXQsIHRoaXMpOworICAgIH0KKworCiAgICAgdm9pZCBwb3N0U2V0VmlzaWJsZVRvTWFpblRo
cmVhZChib29sIHZpc2libGUpCiAgICAgewogICAgICAgICBjYWxsT25NYWluVGhyZWFkKHZpc2li
bGUgPyBDQ0xheWVyVHJlZUhvc3RUZXN0OjpkaXNwYXRjaFNldFZpc2libGUgOiBDQ0xheWVyVHJl
ZUhvc3RUZXN0OjpkaXNwYXRjaFNldEludmlzaWJsZSwgdGhpcyk7CkBAIC0yNTksNiArMjcyLDI2
IEBAIHByb3RlY3RlZDoKICAgICAgICAgdGVzdC0+bV9sYXllclRyZWVIb3N0LmNsZWFyKCk7CiAg
ICAgfQogCisgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hTZXROZWVkc0FuaW1hdGUodm9pZCogc2Vs
ZikKKyAgICB7CisgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgQ0NMYXllclRy
ZWVIb3N0VGVzdCogdGVzdCA9IHN0YXRpY19jYXN0PENDTGF5ZXJUcmVlSG9zdFRlc3QqPihzZWxm
KTsKKyAgICAgIEFTU0VSVCh0ZXN0KTsKKyAgICAgIGlmICh0ZXN0LT5tX2xheWVyVHJlZUhvc3Qp
CisgICAgICAgICAgdGVzdC0+bV9sYXllclRyZWVIb3N0LT5zZXROZWVkc0FuaW1hdGUoKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFNldE5lZWRzQW5pbWF0ZUFuZENvbW1pdCh2
b2lkKiBzZWxmKQorICAgIHsKKyAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICBD
Q0xheWVyVHJlZUhvc3RUZXN0KiB0ZXN0ID0gc3RhdGljX2Nhc3Q8Q0NMYXllclRyZWVIb3N0VGVz
dCo+KHNlbGYpOworICAgICAgQVNTRVJUKHRlc3QpOworICAgICAgaWYgKHRlc3QtPm1fbGF5ZXJU
cmVlSG9zdCkgeworICAgICAgICAgIHRlc3QtPm1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNBbmlt
YXRlKCk7CisgICAgICAgICAgdGVzdC0+bV9sYXllclRyZWVIb3N0LT5zZXROZWVkc0NvbW1pdCgp
OworICAgICAgfQorICAgIH0KKwogICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoU2V0TmVlZHNDb21t
aXQodm9pZCogc2VsZikKICAgICB7CiAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAt
NjM5LDYgKzY3Miw0NiBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdFNldE5lZWRzUmVkcmF3
LCBydW5NdWx0aVRocmVhZCkKICAgICBydW5UZXN0VGhyZWFkZWQoKTsKIH0KIAorLy8gVHJpZ2dl
ciBhIGZyYW1lIHdpdGggc2V0TmVlZHNDb21taXQuIFRoZW4sIGluc2lkZSB0aGUgcmVzdWx0aW5n
IGFuaW1hdGUKKy8vIGNhbGxiYWNrLCByZXF1ZXQgYW5vdGhlciBmcmFtZSB1c2luZyBzZXROZWVk
c0FuaW1hdGUuIEVuZCB0aGUgdGVzdCB3aGVuCisvLyBhbmltYXRlIGdldHMgY2FsbGVkIHlldC1h
Z2FpbiwgaW5kaWNhdGluZyB0aGF0IHRoZSBwcm94eSBpcyBjb3JyZWN0bHkKKy8vIGhhbmRsaW5n
IHRoZSBjYXNlIHdoZXJlIHNldE5lZWRzQW5pbWF0ZSgpIGlzIGNhbGxlZCBpbnNpZGUgdGhlIGJl
Z2luIGZyYW1lCisvLyBmbG93LgorY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdFNldE5lZWRzQW5p
bWF0ZUluc2lkZUFuaW1hdGlvbkNhbGxiYWNrIDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3RU
aHJlYWRPbmx5IHsKK3B1YmxpYzoKKyAgICBDQ0xheWVyVHJlZUhvc3RUZXN0U2V0TmVlZHNBbmlt
YXRlSW5zaWRlQW5pbWF0aW9uQ2FsbGJhY2soKQorICAgICAgICA6IG1fbnVtQW5pbWF0ZXMoMCkK
KyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCisgICAgeworICAg
ICAgICBwb3N0U2V0TmVlZHNBbmltYXRlVG9NYWluVGhyZWFkKCk7CisgICAgfQorCisgICAgdmly
dHVhbCB2b2lkIGFuaW1hdGVBbmRMYXlvdXQoZG91YmxlIGltcGwpCisgICAgeworICAgICAgICBp
ZiAoIW1fbnVtQW5pbWF0ZXMpIHsKKyAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVl
ZHNBbmltYXRlKCk7CisgICAgICAgICAgICBtX251bUFuaW1hdGVzKys7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0KKworICAgIHZpcnR1
YWwgdm9pZCBhZnRlclRlc3QoKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgaW50IG1f
bnVtQW5pbWF0ZXM7Cit9OworCitURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdFNldE5lZWRzQW5p
bWF0ZUluc2lkZUFuaW1hdGlvbkNhbGxiYWNrLCBydW5NdWx0aVRocmVhZCkKK3sKKyAgICBydW5U
ZXN0VGhyZWFkZWQoKTsKK30KKwogY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdFNjcm9sbFNpbXBs
ZSA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RUZXN0VGhyZWFkT25seSB7CiBwdWJsaWM6CiAgICAg
Q0NMYXllclRyZWVIb3N0VGVzdFNjcm9sbFNpbXBsZSgpCg==
</data>
<flag name="review"
          id="114684"
          type_id="1"
          status="+"
          setter="jamesr"
    />
          </attachment>
      

    </bug>

</bugzilla>