<?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>82083</bug_id>
          
          <creation_ts>2012-03-23 13:15:09 -0700</creation_ts>
          <short_desc>Too many ScrollAnimators are allocated on pages with frames</short_desc>
          <delta_ts>2012-03-24 01:58:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</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="Beth Dakin">bdakin</reporter>
          <assigned_to name="Beth Dakin">bdakin</assigned_to>
          <cc>abarth</cc>
    
    <cc>bdakin</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>586661</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-03-23 13:15:09 -0700</bug_when>
    <thetext>Currently, ScrollableArea::scrollAnimator() will create a ScrollAnimator to return if m_scrollAnimator is null. Because of this, we end up creating a ScrollAnimator for nearly every frame on webpages. For example, we allocate 22 ScrollAnimators on  http://www.disboards.com/showthread.php?t=2512881 even though only the main document needs one.

&lt;rdar://problem/11070121&gt;
Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586668</commentid>
    <comment_count>1</comment_count>
      <attachid>133547</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-03-23 13:22:11 -0700</bug_when>
    <thetext>Created attachment 133547
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586671</commentid>
    <comment_count>2</comment_count>
      <attachid>133547</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-03-23 13:25:17 -0700</bug_when>
    <thetext>Comment on attachment 133547
Patch

nepotism=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586682</commentid>
    <comment_count>3</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-03-23 13:37:08 -0700</bug_when>
    <thetext>Thanks Geoff! Committed http://trac.webkit.org/changeset/111896</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586685</commentid>
    <comment_count>4</comment_count>
      <attachid>133547</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-03-23 13:41:16 -0700</bug_when>
    <thetext>Comment on attachment 133547
Patch

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

&gt; Source/WebCore/platform/ScrollableArea.h:99
&gt; +    ScrollAnimator* getExistingScrollAnimator() const { return m_scrollAnimator.get(); }

We usually avoid &apos;get&apos; in accessors like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586686</commentid>
    <comment_count>5</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-03-23 13:42:14 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 133547 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=133547&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/ScrollableArea.h:99
&gt; &gt; +    ScrollAnimator* getExistingScrollAnimator() const { return m_scrollAnimator.get(); }
&gt; 
&gt; We usually avoid &apos;get&apos; in accessors like this.

Would you prefer existingScrollAnmator()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586710</commentid>
    <comment_count>6</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-03-23 14:03:21 -0700</bug_when>
    <thetext>Changed the name to existingScrollAnimator() : http://trac.webkit.org/changeset/111901</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587055</commentid>
    <comment_count>7</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-24 01:58:07 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Changed the name to existingScrollAnimator() : http://trac.webkit.org/changeset/111901

Hm, I&apos;m still confused by your terminology.
I would have suggested to rename scrollAnimator() to ensureScrollAnimator(), and existingScrollAnimator() to scrollAnimator() - that&apos;s how we do it in numerous other places in WebCore.

scrollAnimator() sounds just like a simple accessor, anyone not reading the comment in the header, won&apos;t know it creates something. Would you want to prepare another patch? :-)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133547</attachid>
            <date>2012-03-23 13:22:11 -0700</date>
            <delta_ts>2012-03-23 13:41:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>9352</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMTg5MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDEyLTAzLTIzICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODIwODMKKyAgICAgICAgVG9vIG1hbnkgU2Nyb2xsQW5pbWF0b3Jz
IGFyZSBhbGxvY2F0ZWQgb24gcGFnZXMgd2l0aCBmcmFtZXMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBuZXcgZ2V0dGVy
IHRvIFNjcm9sbGFibGVBcmVhIGNhbGxlZCAKKyAgICAgICAgZ2V0RXhpc3RpbmdTY3JvbGxBbmlt
YXRvcigpIHVubGlrZSBzY3JvbGxBbmltYXRvcigpIHRoaXMgbmV3IGZ1bmN0aW9uIHdpbGwgCisg
ICAgICAgIGp1c3QgcmV0dXJuIG51bGwgaWYgdGhlcmUgaXMgbm90IGFscmVhZHkgYSBTY3JvbGxB
bmltYXRvci4gQ2FsbGVycyBzaG91bGQgdXNlIAorICAgICAgICB0aGlzIG5ldyBmdW5jdGlvbiB3
aGVuIHRoZXkgaGF2ZSBidXNpbmVzcyB3aXRoIFNjcm9sbEFuaW1hdG9yIHRoYXQgZG9lcyBub3Qg
CisgICAgICAgIG5lZWQgdG8gZG8gYW55dGhpbmcgd2hlbiB0aGVyZSBhcmUgbm8gc2Nyb2xsYmFy
cy4KKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZCk6CisgICAgICAgICogcGFnZS9FdmVu
dEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0
dXJlVGFwRG93bik6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3OjpzZXRBbmltYXRvcnNBcmVBY3RpdmUpOgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6dXBkYXRl
U2Nyb2xsYmFycyk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OndpbGxTdGFydExpdmVSZXNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OndpbGxFbmRMaXZlUmVzaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpjb250ZW50QXJlYVdpbGxQYWludCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6bW91c2VFbnRlcmVkQ29udGVudEFyZWEpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6Om1vdXNlRXhpdGVkQ29udGVudEFyZWEp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6Om1vdXNlTW92ZWRJbkNvbnRlbnRB
cmVhKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpjb250ZW50QXJlYURpZFNo
b3cpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OmNvbnRlbnRBcmVhRGlkSGlk
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6d2lsbFJlbW92ZUhvcml6b250
YWxTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OmNvbnRlbnRz
UmVzaXplZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6c2VydmljZVNjcm9s
bEFuaW1hdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAg
ICAgIChTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6
Z2V0RXhpc3RpbmdTY3JvbGxBbmltYXRvcik6CisKIDIwMTItMDMtMjMgIERhdmUgTWljaGFlbCAg
PGRtaWNoYWVsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZWxhbmRpbmcocjExMTc1NCk6IEhU
TUxQbHVnaW5FbGVtZW50IGlzIG5vdCBkZXN0cm95ZWQgb24gcmVsb2FkIG9yIG5hdmlnYXRpb24g
aWYgZ2V0TlBPYmplY3QgaXMgY2FsbGVkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAJKHJldmlzaW9uIDExMTg4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MjUsOCArMTgyNSwxMCBAQCB2b2lkIEZy
YW1lTG9hZGVyOjp0cmFuc2l0aW9uVG9Db21taXR0ZWQoCiAgICAgaWYgKG1fc3RhdGUgIT0gRnJh
bWVTdGF0ZVByb3Zpc2lvbmFsKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9mcmFtZS0+
dmlldygpKQotICAgICAgICBtX2ZyYW1lLT52aWV3KCktPnNjcm9sbEFuaW1hdG9yKCktPmNhbmNl
bEFuaW1hdGlvbnMoKTsKKyAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygp
KSB7CisgICAgICAgIGlmIChTY3JvbGxBbmltYXRvciogc2Nyb2xsQW5pbWF0b3IgPSB2aWV3LT5n
ZXRFeGlzdGluZ1Njcm9sbEFuaW1hdG9yKCkpCisgICAgICAgICAgICBzY3JvbGxBbmltYXRvci0+
Y2FuY2VsQW5pbWF0aW9ucygpOworICAgIH0KIAogICAgIG1fY2xpZW50LT5zZXRDb3BpZXNPblNj
cm9sbCgpOwogICAgIGhpc3RvcnkoKS0+dXBkYXRlRm9yQ29tbWl0KCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAxMTE4ODApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNzksNyArMjM3
OSw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlVGFwRG93bigKICAgICBGcmFt
ZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgdmlldy0+c2Nyb2xsQW5pbWF0b3IoKS0+Y2FuY2VsQW5pbWF0aW9u
cygpOworICAgIGlmIChTY3JvbGxBbmltYXRvciogc2Nyb2xsQW5pbWF0b3IgPSB2aWV3LT5nZXRF
eGlzdGluZ1Njcm9sbEFuaW1hdG9yKCkpCisgICAgICAgIHNjcm9sbEFuaW1hdG9yLT5jYW5jZWxB
bmltYXRpb25zKCk7CiAgICAgY29uc3QgRnJhbWVWaWV3OjpTY3JvbGxhYmxlQXJlYVNldCogYXJl
YXMgPSB2aWV3LT5zY3JvbGxhYmxlQXJlYXMoKTsKICAgICBpZiAoIWFyZWFzKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiAx
MTE4ODApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2NDQsNyArMjY0NCw4IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRBbmltYXRvcnNBcmVB
Y3RpdmUoKQogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2Nyb2xsQW5p
bWF0b3IoKS0+c2V0SXNBY3RpdmUoKTsKKyAgICBpZiAoU2Nyb2xsQW5pbWF0b3IqIHNjcm9sbEFu
aW1hdG9yID0gZ2V0RXhpc3RpbmdTY3JvbGxBbmltYXRvcigpKQorICAgICAgICBzY3JvbGxBbmlt
YXRvci0+c2V0SXNBY3RpdmUoKTsKIAogICAgIGlmICghbV9zY3JvbGxhYmxlQXJlYXMpCiAgICAg
ICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCShy
ZXZpc2lvbiAxMTE4ODApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTkzLDggKzU5MywxMCBAQCB2b2lkIFNjcm9sbFZpZXc6OnVw
ZGF0ZVNjcm9sbGJhcnMoY29uc3QgCiAKICAgICBJbnRQb2ludCBhZGp1c3RlZFNjcm9sbFBvc2l0
aW9uID0gSW50UG9pbnQoZGVzaXJlZE9mZnNldCk7CiAKLSAgICBpZiAoIXNjcm9sbEFuaW1hdG9y
KCktPmlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoKSkKLSAgICAgICAgYWRqdXN0ZWRTY3JvbGxQb3Np
dGlvbiA9IGFkanVzdFNjcm9sbFBvc2l0aW9uV2l0aGluUmFuZ2UoYWRqdXN0ZWRTY3JvbGxQb3Np
dGlvbik7CisgICAgaWYgKFNjcm9sbEFuaW1hdG9yKiBzY3JvbGxBbmltYXRvciA9IGdldEV4aXN0
aW5nU2Nyb2xsQW5pbWF0b3IoKSkgeworICAgICAgICBpZiAoIXNjcm9sbEFuaW1hdG9yLT5pc1J1
YmJlckJhbmRJblByb2dyZXNzKCkpCisgICAgICAgICAgICBhZGp1c3RlZFNjcm9sbFBvc2l0aW9u
ID0gYWRqdXN0U2Nyb2xsUG9zaXRpb25XaXRoaW5SYW5nZShhZGp1c3RlZFNjcm9sbFBvc2l0aW9u
KTsKKyAgICB9CiAKICAgICBpZiAoYWRqdXN0ZWRTY3JvbGxQb3NpdGlvbiAhPSBzY3JvbGxQb3Np
dGlvbigpIHx8IHNjcm9sbE9yaWdpbkNoYW5nZWQoKSkgewogICAgICAgICBTY3JvbGxhYmxlQXJl
YTo6c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKGFkanVzdGVkU2Nyb2xsUG9zaXRpb24g
KyBJbnRTaXplKHNjcm9sbE9yaWdpbigpLngoKSwgc2Nyb2xsT3JpZ2luKCkueSgpKSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCShyZXZpc2lvbiAx
MTE4ODApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE4NSw3ICsxODUsOCBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjp3aWxs
U3RhcnRMaXZlUmVzaXplCiAgICAgaWYgKG1faW5MaXZlUmVzaXplKQogICAgICAgICByZXR1cm47
CiAgICAgbV9pbkxpdmVSZXNpemUgPSB0cnVlOwotICAgIHNjcm9sbEFuaW1hdG9yKCktPndpbGxT
dGFydExpdmVSZXNpemUoKTsKKyAgICBpZiAoU2Nyb2xsQW5pbWF0b3IqIHNjcm9sbEFuaW1hdG9y
ID0gZ2V0RXhpc3RpbmdTY3JvbGxBbmltYXRvcigpKQorICAgICAgICBzY3JvbGxBbmltYXRvci0+
d2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpOwogfQogCiB2b2lkIFNjcm9sbGFibGVBcmVhOjp3aWxsRW5k
TGl2ZVJlc2l6ZSgpCkBAIC0xOTMsMjcgKzE5NCwzMiBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjp3
aWxsRW5kTGl2ZVJlc2l6ZSgpCiAgICAgaWYgKCFtX2luTGl2ZVJlc2l6ZSkKICAgICAgICAgcmV0
dXJuOwogICAgIG1faW5MaXZlUmVzaXplID0gZmFsc2U7Ci0gICAgc2Nyb2xsQW5pbWF0b3IoKS0+
d2lsbEVuZExpdmVSZXNpemUoKTsKKyAgICBpZiAoU2Nyb2xsQW5pbWF0b3IqIHNjcm9sbEFuaW1h
dG9yID0gZ2V0RXhpc3RpbmdTY3JvbGxBbmltYXRvcigpKQorICAgICAgICBzY3JvbGxBbmltYXRv
ci0+d2lsbEVuZExpdmVSZXNpemUoKTsKIH0gICAgCiAKIHZvaWQgU2Nyb2xsYWJsZUFyZWE6OmNv
bnRlbnRBcmVhV2lsbFBhaW50KCkgY29uc3QKIHsKLSAgICBzY3JvbGxBbmltYXRvcigpLT5jb250
ZW50QXJlYVdpbGxQYWludCgpOworICAgIGlmIChTY3JvbGxBbmltYXRvciogc2Nyb2xsQW5pbWF0
b3IgPSBnZXRFeGlzdGluZ1Njcm9sbEFuaW1hdG9yKCkpCisgICAgICAgIHNjcm9sbEFuaW1hdG9y
LT5jb250ZW50QXJlYVdpbGxQYWludCgpOwogfQogCiB2b2lkIFNjcm9sbGFibGVBcmVhOjptb3Vz
ZUVudGVyZWRDb250ZW50QXJlYSgpIGNvbnN0CiB7Ci0gICAgc2Nyb2xsQW5pbWF0b3IoKS0+bW91
c2VFbnRlcmVkQ29udGVudEFyZWEoKTsKKyAgICBpZiAoU2Nyb2xsQW5pbWF0b3IqIHNjcm9sbEFu
aW1hdG9yID0gZ2V0RXhpc3RpbmdTY3JvbGxBbmltYXRvcigpKQorICAgICAgICBzY3JvbGxBbmlt
YXRvci0+bW91c2VFbnRlcmVkQ29udGVudEFyZWEoKTsKIH0KIAogdm9pZCBTY3JvbGxhYmxlQXJl
YTo6bW91c2VFeGl0ZWRDb250ZW50QXJlYSgpIGNvbnN0CiB7Ci0gICAgc2Nyb2xsQW5pbWF0b3Io
KS0+bW91c2VFbnRlcmVkQ29udGVudEFyZWEoKTsKKyAgICBpZiAoU2Nyb2xsQW5pbWF0b3IqIHNj
cm9sbEFuaW1hdG9yID0gZ2V0RXhpc3RpbmdTY3JvbGxBbmltYXRvcigpKQorICAgICAgICBzY3Jv
bGxBbmltYXRvci0+bW91c2VFbnRlcmVkQ29udGVudEFyZWEoKTsKIH0KIAogdm9pZCBTY3JvbGxh
YmxlQXJlYTo6bW91c2VNb3ZlZEluQ29udGVudEFyZWEoKSBjb25zdAogewotICAgIHNjcm9sbEFu
aW1hdG9yKCktPm1vdXNlTW92ZWRJbkNvbnRlbnRBcmVhKCk7CisgICAgaWYgKFNjcm9sbEFuaW1h
dG9yKiBzY3JvbGxBbmltYXRvciA9IGdldEV4aXN0aW5nU2Nyb2xsQW5pbWF0b3IoKSkKKyAgICAg
ICAgc2Nyb2xsQW5pbWF0b3ItPm1vdXNlTW92ZWRJbkNvbnRlbnRBcmVhKCk7CiB9CiAKIHZvaWQg
U2Nyb2xsYWJsZUFyZWE6Om1vdXNlRW50ZXJlZFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJh
cikgY29uc3QKQEAgLTIyOCwxMiArMjM0LDE0IEBAIHZvaWQgU2Nyb2xsYWJsZUFyZWE6Om1vdXNl
RXhpdGVkU2Nyb2xsYmEKIAogdm9pZCBTY3JvbGxhYmxlQXJlYTo6Y29udGVudEFyZWFEaWRTaG93
KCkgY29uc3QKIHsKLSAgICBzY3JvbGxBbmltYXRvcigpLT5jb250ZW50QXJlYURpZFNob3coKTsK
KyAgICBpZiAoU2Nyb2xsQW5pbWF0b3IqIHNjcm9sbEFuaW1hdG9yID0gZ2V0RXhpc3RpbmdTY3Jv
bGxBbmltYXRvcigpKQorICAgICAgICBzY3JvbGxBbmltYXRvci0+Y29udGVudEFyZWFEaWRTaG93
KCk7CiB9CiAKIHZvaWQgU2Nyb2xsYWJsZUFyZWE6OmNvbnRlbnRBcmVhRGlkSGlkZSgpIGNvbnN0
CiB7Ci0gICAgc2Nyb2xsQW5pbWF0b3IoKS0+Y29udGVudEFyZWFEaWRIaWRlKCk7CisgICAgaWYg
KFNjcm9sbEFuaW1hdG9yKiBzY3JvbGxBbmltYXRvciA9IGdldEV4aXN0aW5nU2Nyb2xsQW5pbWF0
b3IoKSkKKyAgICAgICAgc2Nyb2xsQW5pbWF0b3ItPmNvbnRlbnRBcmVhRGlkSGlkZSgpOwogfQog
CiB2b2lkIFNjcm9sbGFibGVBcmVhOjpkaWRBZGRWZXJ0aWNhbFNjcm9sbGJhcihTY3JvbGxiYXIq
IHNjcm9sbGJhcikKQEAgLTI1NywxNCArMjY1LDE1IEBAIHZvaWQgU2Nyb2xsYWJsZUFyZWE6OmRp
ZEFkZEhvcml6b250YWxTY3IKICAgICBzZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoc2Nyb2xsYmFy
T3ZlcmxheVN0eWxlKCkpOwogfQogCi12b2lkIFNjcm9sbGFibGVBcmVhOjpjb250ZW50c1Jlc2l6
ZWQoKQordm9pZCBTY3JvbGxhYmxlQXJlYTo6d2lsbFJlbW92ZUhvcml6b250YWxTY3JvbGxiYXIo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7Ci0gICAgc2Nyb2xsQW5pbWF0b3IoKS0+Y29udGVudHNS
ZXNpemVkKCk7CisgICAgc2Nyb2xsQW5pbWF0b3IoKS0+d2lsbFJlbW92ZUhvcml6b250YWxTY3Jv
bGxiYXIoc2Nyb2xsYmFyKTsKIH0KIAotdm9pZCBTY3JvbGxhYmxlQXJlYTo6d2lsbFJlbW92ZUhv
cml6b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbGFibGVB
cmVhOjpjb250ZW50c1Jlc2l6ZWQoKQogewotICAgIHNjcm9sbEFuaW1hdG9yKCktPndpbGxSZW1v
dmVIb3Jpem9udGFsU2Nyb2xsYmFyKHNjcm9sbGJhcik7CisgICAgaWYgKFNjcm9sbEFuaW1hdG9y
KiBzY3JvbGxBbmltYXRvciA9IGdldEV4aXN0aW5nU2Nyb2xsQW5pbWF0b3IoKSkKKyAgICAgICAg
c2Nyb2xsQW5pbWF0b3ItPmNvbnRlbnRzUmVzaXplZCgpOwogfQogCiBib29sIFNjcm9sbGFibGVB
cmVhOjpoYXNPdmVybGF5U2Nyb2xsYmFycygpIGNvbnN0CkBAIC0zNDgsNyArMzU3LDggQEAgYm9v
bCBTY3JvbGxhYmxlQXJlYTo6aGFzTGF5ZXJGb3JTY3JvbGxDbwogCiB2b2lkIFNjcm9sbGFibGVB
cmVhOjpzZXJ2aWNlU2Nyb2xsQW5pbWF0aW9ucygpCiB7Ci0gICAgc2Nyb2xsQW5pbWF0b3IoKS0+
c2VydmljZVNjcm9sbEFuaW1hdGlvbnMoKTsKKyAgICBpZiAoU2Nyb2xsQW5pbWF0b3IqIHNjcm9s
bEFuaW1hdG9yID0gZ2V0RXhpc3RpbmdTY3JvbGxBbmltYXRvcigpKQorICAgICAgICBzY3JvbGxB
bmltYXRvci0+c2VydmljZVNjcm9sbEFuaW1hdGlvbnMoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCShy
ZXZpc2lvbiAxMTE4ODApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJl
YS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5MiwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXJPdmVybGF5U3R5bGUpOwog
ICAgIFNjcm9sbGJhck92ZXJsYXlTdHlsZSBzY3JvbGxiYXJPdmVybGF5U3R5bGUoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+KG1fc2Nyb2xsYmFyT3Zl
cmxheVN0eWxlKTsgfQogCisgICAgLy8gVGhpcyBnZXR0ZXIgd2lsbCBjcmVhdGUgYSBTY3JvbGxB
bmltYXRvciBpZiBpdCBkb2Vzbid0IGFscmVhZHkgZXhpc3QuCiAgICAgU2Nyb2xsQW5pbWF0b3Iq
IHNjcm9sbEFuaW1hdG9yKCkgY29uc3Q7CisKKyAgICAvLyBUaGlzIGdldHRlciB3aWxsIHJldHVy
biBudWxsIGlmIHRoZSBTY3JvbGxBbmltYXRvciBoYXNuJ3QgYmVlbiBjcmVhdGVkIHlldC4KKyAg
ICBTY3JvbGxBbmltYXRvciogZ2V0RXhpc3RpbmdTY3JvbGxBbmltYXRvcigpIGNvbnN0IHsgcmV0
dXJuIG1fc2Nyb2xsQW5pbWF0b3IuZ2V0KCk7IH0KKwogICAgIGNvbnN0IEludFBvaW50JiBzY3Jv
bGxPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbE9yaWdpbjsgfQogICAgIGJvb2wgc2Ny
b2xsT3JpZ2luQ2hhbmdlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsT3JpZ2luQ2hhbmdlZDsg
fQogCg==
</data>
<flag name="review"
          id="137575"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>