<?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>123707</bug_id>
          
          <creation_ts>2013-11-03 10:35:49 -0800</creation_ts>
          <short_desc>[Cocoa] Wrappers&apos; -copyWithZone: should copy if the collection is mutable</short_desc>
          <delta_ts>2013-11-03 18:59:34 -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>WebKit2</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>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>ggaren</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>946453</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2013-11-03 10:35:49 -0800</bug_when>
    <thetext>[Cocoa] Wrappers&apos; -copyWithZone: should copy if the collection is mutable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946454</commentid>
    <comment_count>1</comment_count>
      <attachid>215870</attachid>
    <who name="">mitz</who>
    <bug_when>2013-11-03 10:38:16 -0800</bug_when>
    <thetext>Created attachment 215870
If the collection is mutable, make a copy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946466</commentid>
    <comment_count>2</comment_count>
      <attachid>215870</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-11-03 12:25:33 -0800</bug_when>
    <thetext>Comment on attachment 215870
If the collection is mutable, make a copy

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

&gt; Source/WebKit2/Shared/ImmutableArray.h:68
&gt; +    const Vector&lt;RefPtr&lt;APIObject&gt;&gt; entries() { return m_entries; }

Should this be Vector&amp; instead of Vector? As written, each call to entries() will make a copy.

&gt; Source/WebKit2/Shared/Cocoa/WKNSArray.mm:63
&gt; +    auto entries = reinterpret_cast&lt;ImmutableArray*&gt;(&amp;_array)-&gt;entries();

If you had not used auto in this context, you would have use an explicit reference type, in which case the compiler would have caught the extra copy mistake (assuming I am right that it was a mistake).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946467</commentid>
    <comment_count>3</comment_count>
      <attachid>215870</attachid>
    <who name="">mitz</who>
    <bug_when>2013-11-03 12:28:32 -0800</bug_when>
    <thetext>Comment on attachment 215870
If the collection is mutable, make a copy

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

&gt;&gt; Source/WebKit2/Shared/ImmutableArray.h:68
&gt;&gt; +    const Vector&lt;RefPtr&lt;APIObject&gt;&gt; entries() { return m_entries; }
&gt; 
&gt; Should this be Vector&amp; instead of Vector? As written, each call to entries() will make a copy.

Yes.

&gt;&gt; Source/WebKit2/Shared/Cocoa/WKNSArray.mm:63
&gt;&gt; +    auto entries = reinterpret_cast&lt;ImmutableArray*&gt;(&amp;_array)-&gt;entries();
&gt; 
&gt; If you had not used auto in this context, you would have use an explicit reference type, in which case the compiler would have caught the extra copy mistake (assuming I am right that it was a mistake).

This needs to be a copy, not a reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946468</commentid>
    <comment_count>4</comment_count>
      <attachid>215872</attachid>
    <who name="">mitz</who>
    <bug_when>2013-11-03 12:30:49 -0800</bug_when>
    <thetext>Created attachment 215872
If the collection is mutable, make a copy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946472</commentid>
    <comment_count>5</comment_count>
      <attachid>215872</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-11-03 12:37:03 -0800</bug_when>
    <thetext>Comment on attachment 215872
If the collection is mutable, make a copy

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946473</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-11-03 12:38:55 -0800</bug_when>
    <thetext>&gt; &gt;&gt; Source/WebKit2/Shared/Cocoa/WKNSArray.mm:63
&gt; &gt;&gt; +    auto entries = reinterpret_cast&lt;ImmutableArray*&gt;(&amp;_array)-&gt;entries();
&gt; &gt; 
&gt; &gt; If you had not used auto in this context, you would have use an explicit reference type, in which case the compiler would have caught the extra copy mistake (assuming I am right that it was a mistake).
&gt; 
&gt; This needs to be a copy, not a reference.

What I meant was that, if you had used

const ImmutableArray::VectorType&amp; entries = ...

you would have gotten an error, due to taking a reference to a temporary, which might have alerted you to the accidental copy caused by the return type of entries().

I think about stuff like this because I&apos;m still not sure when we should use auto, and when we should not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946474</commentid>
    <comment_count>7</comment_count>
    <who name="">mitz</who>
    <bug_when>2013-11-03 12:41:13 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; &gt;&gt; Source/WebKit2/Shared/Cocoa/WKNSArray.mm:63
&gt; &gt; &gt;&gt; +    auto entries = reinterpret_cast&lt;ImmutableArray*&gt;(&amp;_array)-&gt;entries();
&gt; &gt; &gt; 
&gt; &gt; &gt; If you had not used auto in this context, you would have use an explicit reference type, in which case the compiler would have caught the extra copy mistake (assuming I am right that it was a mistake).
&gt; &gt; 
&gt; &gt; This needs to be a copy, not a reference.
&gt; 
&gt; What I meant was that, if you had used
&gt; 
&gt; const ImmutableArray::VectorType&amp; entries = ...
&gt; 
&gt; you would have gotten an error, due to taking a reference to a temporary, which might have alerted you to the accidental copy caused by the return type of entries().

But, regardless of my mistake in the definition of entries(), I wouldn’t have used the above type for the local, since I did want a copy, not a reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946475</commentid>
    <comment_count>8</comment_count>
    <who name="">mitz</who>
    <bug_when>2013-11-03 12:41:27 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r158538&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946477</commentid>
    <comment_count>9</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-11-03 12:48:42 -0800</bug_when>
    <thetext>&gt; But, regardless of my mistake in the definition of entries(), I wouldn’t have used the above type for the local, since I did want a copy, not a reference.

Uh oh. Since the patch you committed passes a reference from _array (and _dictionary) to adopt(), and adopt() calls swap() -- does this mean that -copyWithZone will remove all entries from self?

I am demonstrating my limitations as a reviewer :(.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946479</commentid>
    <comment_count>10</comment_count>
    <who name="">mitz</who>
    <bug_when>2013-11-03 12:56:25 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; But, regardless of my mistake in the definition of entries(), I wouldn’t have used the above type for the local, since I did want a copy, not a reference.
&gt; 
&gt; Uh oh. Since the patch you committed passes a reference from _array (and _dictionary) to adopt(), and adopt() calls swap() -- does this mean that -copyWithZone will remove all entries from self?

The locals’ types aren’t const references. They are a Vector and a MapType.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946526</commentid>
    <comment_count>11</comment_count>
    <who name="">mitz</who>
    <bug_when>2013-11-03 18:57:26 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Committed &lt;http://trac.webkit.org/r158538&gt;.

I shouldn’t have landed this patch without a WebKit2 owner’s permission. I reverted the change in &lt;http://trac.webkit.org/r158552&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946527</commentid>
    <comment_count>12</comment_count>
    <who name="">mitz</who>
    <bug_when>2013-11-03 18:59:34 -0800</bug_when>
    <thetext>…and committed &lt;http://trac.webkit.org/r158553&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215870</attachid>
            <date>2013-11-03 10:38:16 -0800</date>
            <delta_ts>2013-11-03 12:30:47 -0800</delta_ts>
            <desc>If the collection is mutable, make a copy</desc>
            <filename>bug-123707-20131103103820.patch</filename>
            <type>text/plain</type>
            <size>2710</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1ODUzNSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEzLTExLTAzICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBXcmFwcGVycycgLWNv
cHlXaXRoWm9uZTogc2hvdWxkIGNvcHkgaWYgdGhlIGNvbGxlY3Rpb24gaXMgbXV0YWJsZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNzA3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQ29j
b2EvV0tOU0FycmF5Lm1tOgorICAgICAgICAoLVtXS05TQXJyYXkgY29weVdpdGhab25lOl0pOiBJ
ZiB0aGUgYXJyYXkgaXMgbXV0YWJsZSwgbWFrZSBhIGNvcHkuCisgICAgICAgICogU2hhcmVkL0Nv
Y29hL1dLTlNEaWN0aW9uYXJ5Lm1tOgorICAgICAgICAoLVtXS05TRGljdGlvbmFyeSBjb3B5V2l0
aFpvbmU6XSk6IElmIHRoZSBkaWN0aW9uYXJ5IGlzIG11dGFibGUsIG1ha2UgYSBjb3B5LgorICAg
ICAgICAqIFNoYXJlZC9JbW11dGFibGVBcnJheS5oOgorICAgICAgICAoV2ViS2l0OjpJbW11dGFi
bGVBcnJheTo6ZW50cmllcyk6IEFkZGVkIHRoaXMgYWNjZXNzb3IuCisKIDIwMTMtMTEtMDIgIERh
biBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFdyYXBwZXJz
IG1pc2hhbmRsZSBOVUxMIHZhbHVlcyBpbiBhcnJheXMgYW5kIGRpY3Rpb25hcmllcwpJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL0ltbXV0YWJsZUFycmF5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvU2hhcmVkL0ltbXV0YWJsZUFycmF5LmgJKHJldmlzaW9uIDE1ODQ5MykKKysr
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbW11dGFibGVBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBA
IC02NSw2ICs2NSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc011dGFibGUoKSB7
IHJldHVybiBmYWxzZTsgfQogCisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+PiBl
bnRyaWVzKCkgeyByZXR1cm4gbV9lbnRyaWVzOyB9CisKIHByb3RlY3RlZDoKICAgICBJbW11dGFi
bGVBcnJheSgpOwogICAgIEltbXV0YWJsZUFycmF5KEFkb3B0VGFnLCBBUElPYmplY3QqKiBlbnRy
aWVzLCBzaXplX3QpOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL1dLTlNBcnJh
eS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvV0tOU0FycmF5
Lm1tCShyZXZpc2lvbiAxNTg0OTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvV0tO
U0FycmF5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1NywxMSBAQCAtIChpZClvYmplY3RB
dEluZGV4OihOU1VJbnRlZ2VyKWkKIAogLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25l
CiB7Ci0gICAgcmV0dXJuIFtzZWxmIHJldGFpbl07CisgICAgaWYgKCFyZWludGVycHJldF9jYXN0
PEltbXV0YWJsZUFycmF5Kj4oJl9hcnJheSktPmlzTXV0YWJsZSgpKQorICAgICAgICByZXR1cm4g
W3NlbGYgcmV0YWluXTsKKworICAgIGF1dG8gZW50cmllcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8SW1t
dXRhYmxlQXJyYXkqPigmX2FycmF5KS0+ZW50cmllcygpOworICAgIHJldHVybiBJbW11dGFibGVB
cnJheTo6YWRvcHQoZW50cmllcykubGVha1JlZigpLT53cmFwcGVyKCk7CiB9CiAKICNwcmFnbWEg
bWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgpJbmRleDogU291cmNlL1dlYktp
dDIvU2hhcmVkL0NvY29hL1dLTlNEaWN0aW9uYXJ5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db2NvYS9XS05TRGljdGlvbmFyeS5tbQkocmV2aXNpb24gMTU4NDkzKQor
KysgU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL1dLTlNEaWN0aW9uYXJ5Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC03Niw3ICs3NiwxMSBAQCAtIChOU0VudW1lcmF0b3IgKilrZXlFbnVtZXJhdG9y
CiAKIC0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQogewotICAgIHJldHVybiBbc2Vs
ZiByZXRhaW5dOworICAgIGlmICghcmVpbnRlcnByZXRfY2FzdDxJbW11dGFibGVEaWN0aW9uYXJ5
Kj4oJl9kaWN0aW9uYXJ5KS0+aXNNdXRhYmxlKCkpCisgICAgICAgIHJldHVybiBbc2VsZiByZXRh
aW5dOworCisgICAgYXV0byBtYXAgPSByZWludGVycHJldF9jYXN0PEltbXV0YWJsZURpY3Rpb25h
cnkqPigmX2RpY3Rpb25hcnkpLT5tYXAoKTsKKyAgICByZXR1cm4gSW1tdXRhYmxlRGljdGlvbmFy
eTo6YWRvcHQobWFwKS5sZWFrUmVmKCktPndyYXBwZXIoKTsKIH0KIAogI3ByYWdtYSBtYXJrIFdL
T2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215872</attachid>
            <date>2013-11-03 12:30:49 -0800</date>
            <delta_ts>2013-11-03 12:37:03 -0800</delta_ts>
            <desc>If the collection is mutable, make a copy</desc>
            <filename>bug-123707-20131103123055.patch</filename>
            <type>text/plain</type>
            <size>2711</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1ODUzNSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEzLTExLTAzICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBXcmFwcGVycycgLWNv
cHlXaXRoWm9uZTogc2hvdWxkIGNvcHkgaWYgdGhlIGNvbGxlY3Rpb24gaXMgbXV0YWJsZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNzA3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQ29j
b2EvV0tOU0FycmF5Lm1tOgorICAgICAgICAoLVtXS05TQXJyYXkgY29weVdpdGhab25lOl0pOiBJ
ZiB0aGUgYXJyYXkgaXMgbXV0YWJsZSwgbWFrZSBhIGNvcHkuCisgICAgICAgICogU2hhcmVkL0Nv
Y29hL1dLTlNEaWN0aW9uYXJ5Lm1tOgorICAgICAgICAoLVtXS05TRGljdGlvbmFyeSBjb3B5V2l0
aFpvbmU6XSk6IElmIHRoZSBkaWN0aW9uYXJ5IGlzIG11dGFibGUsIG1ha2UgYSBjb3B5LgorICAg
ICAgICAqIFNoYXJlZC9JbW11dGFibGVBcnJheS5oOgorICAgICAgICAoV2ViS2l0OjpJbW11dGFi
bGVBcnJheTo6ZW50cmllcyk6IEFkZGVkIHRoaXMgYWNjZXNzb3IuCisKIDIwMTMtMTEtMDIgIERh
biBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFdyYXBwZXJz
IG1pc2hhbmRsZSBOVUxMIHZhbHVlcyBpbiBhcnJheXMgYW5kIGRpY3Rpb25hcmllcwpJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL0ltbXV0YWJsZUFycmF5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvU2hhcmVkL0ltbXV0YWJsZUFycmF5LmgJKHJldmlzaW9uIDE1ODQ5MykKKysr
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbW11dGFibGVBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBA
IC02NSw2ICs2NSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc011dGFibGUoKSB7
IHJldHVybiBmYWxzZTsgfQogCisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+PiYg
ZW50cmllcygpIHsgcmV0dXJuIG1fZW50cmllczsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgSW1tdXRh
YmxlQXJyYXkoKTsKICAgICBJbW11dGFibGVBcnJheShBZG9wdFRhZywgQVBJT2JqZWN0KiogZW50
cmllcywgc2l6ZV90KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9XS05TQXJy
YXkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL1dLTlNBcnJh
eS5tbQkocmV2aXNpb24gMTU4NDkzKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL1dL
TlNBcnJheS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsMTEgQEAgLSAoaWQpb2JqZWN0
QXRJbmRleDooTlNVSW50ZWdlcilpCiAKIC0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9u
ZQogewotICAgIHJldHVybiBbc2VsZiByZXRhaW5dOworICAgIGlmICghcmVpbnRlcnByZXRfY2Fz
dDxJbW11dGFibGVBcnJheSo+KCZfYXJyYXkpLT5pc011dGFibGUoKSkKKyAgICAgICAgcmV0dXJu
IFtzZWxmIHJldGFpbl07CisKKyAgICBhdXRvIGVudHJpZXMgPSByZWludGVycHJldF9jYXN0PElt
bXV0YWJsZUFycmF5Kj4oJl9hcnJheSktPmVudHJpZXMoKTsKKyAgICByZXR1cm4gSW1tdXRhYmxl
QXJyYXk6OmFkb3B0KGVudHJpZXMpLmxlYWtSZWYoKS0+d3JhcHBlcigpOwogfQogCiAjcHJhZ21h
IG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db2NvYS9XS05TRGljdGlvbmFyeS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29jb2EvV0tOU0RpY3Rpb25hcnkubW0JKHJldmlzaW9uIDE1ODQ5MykK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9XS05TRGljdGlvbmFyeS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNzYsNyArNzYsMTEgQEAgLSAoTlNFbnVtZXJhdG9yICopa2V5RW51bWVyYXRv
cgogCiAtIChpZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKIHsKLSAgICByZXR1cm4gW3Nl
bGYgcmV0YWluXTsKKyAgICBpZiAoIXJlaW50ZXJwcmV0X2Nhc3Q8SW1tdXRhYmxlRGljdGlvbmFy
eSo+KCZfZGljdGlvbmFyeSktPmlzTXV0YWJsZSgpKQorICAgICAgICByZXR1cm4gW3NlbGYgcmV0
YWluXTsKKworICAgIGF1dG8gbWFwID0gcmVpbnRlcnByZXRfY2FzdDxJbW11dGFibGVEaWN0aW9u
YXJ5Kj4oJl9kaWN0aW9uYXJ5KS0+bWFwKCk7CisgICAgcmV0dXJuIEltbXV0YWJsZURpY3Rpb25h
cnk6OmFkb3B0KG1hcCkubGVha1JlZigpLT53cmFwcGVyKCk7CiB9CiAKICNwcmFnbWEgbWFyayBX
S09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgo=
</data>
<flag name="review"
          id="238719"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>