<?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>188197</bug_id>
          
          <creation_ts>2018-07-31 09:57:02 -0700</creation_ts>
          <short_desc>Clean up TransformationMatrix implementation</short_desc>
          <delta_ts>2018-08-02 09:22:45 -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>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1446580</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-07-31 09:57:02 -0700</bug_when>
    <thetext>Clean up TransformationMatrix implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1446582</commentid>
    <comment_count>1</comment_count>
      <attachid>346173</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-07-31 09:59:45 -0700</bug_when>
    <thetext>Created attachment 346173
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1446584</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-07-31 10:02:01 -0700</bug_when>
    <thetext>Attachment 346173 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/transforms/TransformationMatrix.h:338:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1446585</commentid>
    <comment_count>3</comment_count>
      <attachid>346174</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-07-31 10:17:42 -0700</bug_when>
    <thetext>Created attachment 346174
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1446587</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-07-31 10:19:52 -0700</bug_when>
    <thetext>Attachment 346174 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/transforms/TransformationMatrix.h:338:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1446615</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-07-31 11:37:23 -0700</bug_when>
    <thetext>Committed r234433: &lt;https://trac.webkit.org/changeset/234433&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1446618</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-07-31 11:40:41 -0700</bug_when>
    <thetext>&lt;rdar://problem/42780654&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447115</commentid>
    <comment_count>7</comment_count>
      <attachid>346174</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-08-01 19:54:09 -0700</bug_when>
    <thetext>Comment on attachment 346174
Patch

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

&gt; Source/WebCore/platform/graphics/transforms/TransformationMatrix.h:338
&gt; -        return (m_matrix[0][0] == m2.m_matrix[0][0] &amp;&amp;
&gt; -                m_matrix[0][1] == m2.m_matrix[0][1] &amp;&amp;
&gt; -                m_matrix[0][2] == m2.m_matrix[0][2] &amp;&amp;
&gt; -                m_matrix[0][3] == m2.m_matrix[0][3] &amp;&amp;
&gt; -                m_matrix[1][0] == m2.m_matrix[1][0] &amp;&amp;
&gt; -                m_matrix[1][1] == m2.m_matrix[1][1] &amp;&amp;
&gt; -                m_matrix[1][2] == m2.m_matrix[1][2] &amp;&amp;
&gt; -                m_matrix[1][3] == m2.m_matrix[1][3] &amp;&amp;
&gt; -                m_matrix[2][0] == m2.m_matrix[2][0] &amp;&amp;
&gt; -                m_matrix[2][1] == m2.m_matrix[2][1] &amp;&amp;
&gt; -                m_matrix[2][2] == m2.m_matrix[2][2] &amp;&amp;
&gt; -                m_matrix[2][3] == m2.m_matrix[2][3] &amp;&amp;
&gt; -                m_matrix[3][0] == m2.m_matrix[3][0] &amp;&amp;
&gt; -                m_matrix[3][1] == m2.m_matrix[3][1] &amp;&amp;
&gt; -                m_matrix[3][2] == m2.m_matrix[3][2] &amp;&amp;
&gt; -                m_matrix[3][3] == m2.m_matrix[3][3]);
&gt; +        return memcmp(&amp;m_matrix[0][0], &amp;m2.m_matrix[0][0], sizeof(Matrix4)) == 0;

This is a semantic change for two reasons:

1) double == double and memcmp of the double memory are not the same for numbers like NANs for example.
2) This now potentially compares padding bytes that could have uninitialized data in them; in practice I suppose those won’t be present since doubles are so big.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447165</commentid>
    <comment_count>8</comment_count>
      <attachid>346174</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-01 21:19:16 -0700</bug_when>
    <thetext>Comment on attachment 346174
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/transforms/TransformationMatrix.h:338
&gt;&gt; +        return memcmp(&amp;m_matrix[0][0], &amp;m2.m_matrix[0][0], sizeof(Matrix4)) == 0;
&gt; 
&gt; This is a semantic change for two reasons:
&gt; 
&gt; 1) double == double and memcmp of the double memory are not the same for numbers like NANs for example.
&gt; 2) This now potentially compares padding bytes that could have uninitialized data in them; in practice I suppose those won’t be present since doubles are so big.

Nice catch! Oops, yeah. I&apos;ll revert this part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447167</commentid>
    <comment_count>9</comment_count>
      <attachid>346174</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-01 21:20:43 -0700</bug_when>
    <thetext>Comment on attachment 346174
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/transforms/TransformationMatrix.h:338
&gt;&gt;&gt; +        return memcmp(&amp;m_matrix[0][0], &amp;m2.m_matrix[0][0], sizeof(Matrix4)) == 0;
&gt;&gt; 
&gt;&gt; This is a semantic change for two reasons:
&gt;&gt; 
&gt;&gt; 1) double == double and memcmp of the double memory are not the same for numbers like NANs for example.
&gt;&gt; 2) This now potentially compares padding bytes that could have uninitialized data in them; in practice I suppose those won’t be present since doubles are so big.
&gt; 
&gt; Nice catch! Oops, yeah. I&apos;ll revert this part.

I think this (2) never happens since TransformationMatrix (and Matrix4 m_matrix member) does not have padding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447168</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-01 21:24:16 -0700</bug_when>
    <thetext>Committed r234493: &lt;https://trac.webkit.org/changeset/234493&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447252</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-08-02 09:22:45 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #9)
&gt; I think this (2) never happens since TransformationMatrix (and Matrix4
&gt; m_matrix member) does not have padding.

Yes, in practice there is no padding. I was just pointing out that the language doesn’t guarantee that.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346173</attachid>
            <date>2018-07-31 09:59:45 -0700</date>
            <delta_ts>2018-07-31 10:17:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188197-20180801015944.patch</filename>
            <type>text/plain</type>
            <size>6258</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjJiZTgwMTAxZTUzYmJm
ZTcxNWJhZGFhMjMyZWQxMDlhZGZiYmRhYy4uYzgzMjQwNDFlYzE5NTI2NjQ5ZDQwZjI5YmEyYWMz
MjkzYzdjMTY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE4LTA3LTMxICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIENsZWFuIHVwIFRy
YW5zZm9ybWF0aW9uTWF0cml4IGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODgxOTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBwZXJmb3JtIGNsZWFuaW5nIHVwIG9mIFRyYW5z
Zm9ybWF0aW9uTWF0cml4LgorCisgICAgICAgIDEuIFdlIGRyb3AgdXNlci1kZWZpbmVkIG9wZXJh
dG9yPSBhbmQgY29weSBjb25zdHJ1Y3Rvci4gRGVmYXVsdCBvbmVzIHdvcmtzIHdlbGwgZm9yIFRy
YW5zZm9ybWF0aW9uTWF0cml4LgorICAgICAgICAyLiBSZW1vdmUgdW51c2VkIHNldE1hdHJpeC4g
V2UgZXhwbGljaXRseSB1c2UgbWVtY3B5IGluIFRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCAob25s
eSBvbmUgcGxhY2UpLgorICAgICAgICAzLiBVc2UgbWVtY21wIGZvciBpbXBsZW1lbnRpbmcgb3Bl
cmF0b3I9PS4KKworICAgICAgICBJbiAoMikgYW5kICgzKSwgd2UgdXNlIGBtZW1jcHkoJm1hdHJp
eFswXVswXSwgJnRtcFswXVswXSwgc2l6ZW9mKE1hdHJpeDQpKWAgaW5zdGVhZCBvZiBgbWVtY3B5
KG1hdHJpeCwgdG1wLCBzaXplb2YoTWF0cml4NCkpYCwKKyAgICAgICAgc2luY2UgdGhleSBib3Ro
IGFyZSBub24gbnVsbHB0ciBhbmQgdGhlIGZvcm1lciBpcyBlYXNpZXIgdG8gdW5kZXJzdGFuZC4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25N
YXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6Om11bHRp
cGx5KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjptdWx0VmVjTWF0
cml4IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0
cml4Ojppc0ludmVydGlibGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VHJh
bnNmb3JtYXRpb25NYXRyaXg6OmludmVyc2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6Om1ha2VBZmZpbmUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OnRvQWZmaW5lVHJhbnNmb3JtIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kRmxvYXQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OmJsZW5kMik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6YmxlbmQ0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpibGVuZCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6ZGVjb21wb3NlMiBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6ZGVj
b21wb3NlNCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlv
bk1hdHJpeDo6cmVjb21wb3NlMik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zv
cm1hdGlvbk1hdHJpeDo6cmVjb21wb3NlNCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpU
cmFuc2Zvcm1hdGlvbk1hdHJpeDo6aXNJbnRlZ2VyVHJhbnNsYXRpb24gY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OmNvbnRhaW5zT25seUZp
bml0ZVZhbHVlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6dG8yZFRyYW5zZm9ybSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6dG9Db2x1bW5NYWpvckZsb2F0QXJyYXkgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OmlzQmFj
a0ZhY2VWaXNpYmxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9y
PDwpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJh
bnNmb3JtYXRpb25NYXRyaXguaDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0
cml4OjpzZXRNYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRy
aXg6Om9wZXJhdG9yID0pOiBEZWxldGVkLgorCiAyMDE4LTA3LTMxICBZdXN1a2UgU3V6dWtpICA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFVzZSBzdGF0aWMgY29uc3QgZ2xvYmFs
IHZhcmlhYmxlIGZvciBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbnN0ZWFkIG9mIE5ldmVyRGVzdHJv
eWVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCmluZGV4IGViM2E0N2Vj
MTlmMmI1MDk1MWFhNTM1M2ZiNjExM2UzNTVmNDBjMzEuLmExNmM0NTk1NTQ0ZTIyOWJhZjFjOWQ4
NjZmMjA5ZTQxODc1MGY3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXgu
Y3BwCkBAIC0xNDE2LDcgKzE0MTYsNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgVHJhbnNmb3Jt
YXRpb25NYXRyaXg6Om11bHRpcGx5KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JgogICAgIHRt
cFszXVszXSA9IChtYXQubV9tYXRyaXhbM11bMF0gKiBtX21hdHJpeFswXVszXSArIG1hdC5tX21h
dHJpeFszXVsxXSAqIG1fbWF0cml4WzFdWzNdCiAgICAgICAgICAgICAgICArIG1hdC5tX21hdHJp
eFszXVsyXSAqIG1fbWF0cml4WzJdWzNdICsgbWF0Lm1fbWF0cml4WzNdWzNdICogbV9tYXRyaXhb
M11bM10pOwogCi0gICAgc2V0TWF0cml4KHRtcCk7CisgICAgbWVtY3B5KCZtX21hdHJpeFswXVsw
XSwgJnRtcFswXVswXSwgc2l6ZW9mKE1hdHJpeDQpOwogI2VuZGlmCiAgICAgcmV0dXJuICp0aGlz
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCmluZGV4IDM3ZDgxNTllNmJi
MTFkMTNkYmJjMDJlZTVjNWIxYWNkM2RiMWViODYuLjEyNDI4MjYwZTdmNDIxNjc1ZDU4NjVjODI2
YmQxYTA3ODc2ZDJlM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKQEAg
LTExNiw3ICsxMTYsNiBAQCBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB7CiAgICAgewogICAg
IH0KIAotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiB0KSB7ICp0aGlzID0gdDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIFRyYW5zZm9ybWF0aW9uTWF0
cml4KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwogCiAgICAgdm9pZCBzZXRNYXRyaXgoZG91Ymxl
IGEsIGRvdWJsZSBiLCBkb3VibGUgYywgZG91YmxlIGQsIGRvdWJsZSBlLCBkb3VibGUgZikKQEAg
LTEzNywxMiArMTM2LDYgQEAgY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXggewogICAgICAgICBt
X21hdHJpeFsyXVswXSA9IG0zMTsgbV9tYXRyaXhbMl1bMV0gPSBtMzI7IG1fbWF0cml4WzJdWzJd
ID0gbTMzOyBtX21hdHJpeFsyXVszXSA9IG0zNDsgCiAgICAgICAgIG1fbWF0cml4WzNdWzBdID0g
bTQxOyBtX21hdHJpeFszXVsxXSA9IG00MjsgbV9tYXRyaXhbM11bMl0gPSBtNDM7IG1fbWF0cml4
WzNdWzNdID0gbTQ0OwogICAgIH0KLSAgICAKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgb3Bl
cmF0b3IgPShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCAmdCkKLSAgICB7Ci0gICAgICAgIHNl
dE1hdHJpeCh0Lm1fbWF0cml4KTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KIAogICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYWtlSWRlbnRpdHkoKQogICAgIHsKQEAgLTM0MiwyMiAr
MzM1LDcgQEAgY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXggewogCiAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtMikgY29uc3QKICAgICB7Ci0gICAgICAg
IHJldHVybiAobV9tYXRyaXhbMF1bMF0gPT0gbTIubV9tYXRyaXhbMF1bMF0gJiYKLSAgICAgICAg
ICAgICAgICBtX21hdHJpeFswXVsxXSA9PSBtMi5tX21hdHJpeFswXVsxXSAmJgotICAgICAgICAg
ICAgICAgIG1fbWF0cml4WzBdWzJdID09IG0yLm1fbWF0cml4WzBdWzJdICYmCi0gICAgICAgICAg
ICAgICAgbV9tYXRyaXhbMF1bM10gPT0gbTIubV9tYXRyaXhbMF1bM10gJiYKLSAgICAgICAgICAg
ICAgICBtX21hdHJpeFsxXVswXSA9PSBtMi5tX21hdHJpeFsxXVswXSAmJgotICAgICAgICAgICAg
ICAgIG1fbWF0cml4WzFdWzFdID09IG0yLm1fbWF0cml4WzFdWzFdICYmCi0gICAgICAgICAgICAg
ICAgbV9tYXRyaXhbMV1bMl0gPT0gbTIubV9tYXRyaXhbMV1bMl0gJiYKLSAgICAgICAgICAgICAg
ICBtX21hdHJpeFsxXVszXSA9PSBtMi5tX21hdHJpeFsxXVszXSAmJgotICAgICAgICAgICAgICAg
IG1fbWF0cml4WzJdWzBdID09IG0yLm1fbWF0cml4WzJdWzBdICYmCi0gICAgICAgICAgICAgICAg
bV9tYXRyaXhbMl1bMV0gPT0gbTIubV9tYXRyaXhbMl1bMV0gJiYKLSAgICAgICAgICAgICAgICBt
X21hdHJpeFsyXVsyXSA9PSBtMi5tX21hdHJpeFsyXVsyXSAmJgotICAgICAgICAgICAgICAgIG1f
bWF0cml4WzJdWzNdID09IG0yLm1fbWF0cml4WzJdWzNdICYmCi0gICAgICAgICAgICAgICAgbV9t
YXRyaXhbM11bMF0gPT0gbTIubV9tYXRyaXhbM11bMF0gJiYKLSAgICAgICAgICAgICAgICBtX21h
dHJpeFszXVsxXSA9PSBtMi5tX21hdHJpeFszXVsxXSAmJgotICAgICAgICAgICAgICAgIG1fbWF0
cml4WzNdWzJdID09IG0yLm1fbWF0cml4WzNdWzJdICYmCi0gICAgICAgICAgICAgICAgbV9tYXRy
aXhbM11bM10gPT0gbTIubV9tYXRyaXhbM11bM10pOworICAgICAgICByZXR1cm4gbWVtY21wKCZt
X21hdHJpeFswXVswXSwgJm0yLm1fbWF0cml4WzBdWzBdLCBzaXplb2YoTWF0cml4NCkpID09IDA7
CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KQEAgLTQzOSwxMiAr
NDE3LDYgQEAgY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXggewogICAgICAgICByZXR1cm4gRmxv
YXRQb2ludDNEKHN0YXRpY19jYXN0PGZsb2F0PihyZXN1bHRYKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHJlc3VsdFkpLCBzdGF0aWNfY2FzdDxmbG9hdD4ocmVzdWx0WikpOwogICAgIH0KIAotICAgIHZv
aWQgc2V0TWF0cml4KGNvbnN0IE1hdHJpeDQgbSkKLSAgICB7Ci0gICAgICAgIGlmIChtICYmIG0g
IT0gbV9tYXRyaXgpCi0gICAgICAgICAgICBtZW1jcHkobV9tYXRyaXgsIG0sIHNpemVvZihNYXRy
aXg0KSk7Ci0gICAgfQotCiAgICAgTWF0cml4NCBtX21hdHJpeDsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346174</attachid>
            <date>2018-07-31 10:17:42 -0700</date>
            <delta_ts>2018-07-31 11:34:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188197-20180801021741.patch</filename>
            <type>text/plain</type>
            <size>4997</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjJiZTgwMTAxZTUzYmJm
ZTcxNWJhZGFhMjMyZWQxMDlhZGZiYmRhYy4uOTcyMWU2MzlhMTMxZDUzYTYxOGUyNTkxNWU5Y2I1
NzU2NzJkYmM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE4LTA3LTMxICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIENsZWFuIHVwIFRy
YW5zZm9ybWF0aW9uTWF0cml4IGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODgxOTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBwZXJmb3JtIGNsZWFuaW5nIHVwIG9mIFRyYW5z
Zm9ybWF0aW9uTWF0cml4LgorCisgICAgICAgIDEuIFdlIGRyb3AgdXNlci1kZWZpbmVkIG9wZXJh
dG9yPSBhbmQgY29weSBjb25zdHJ1Y3Rvci4gRGVmYXVsdCBvbmVzIHdvcmtzIHdlbGwgZm9yIFRy
YW5zZm9ybWF0aW9uTWF0cml4LgorICAgICAgICAyLiBSZW1vdmUgdW51c2VkIHNldE1hdHJpeC4g
V2UgZXhwbGljaXRseSB1c2UgbWVtY3B5IGluIFRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCAob25s
eSBvbmUgcGxhY2UpLgorICAgICAgICAzLiBVc2UgbWVtY21wIGZvciBpbXBsZW1lbnRpbmcgb3Bl
cmF0b3I9PS4KKworICAgICAgICBJbiAoMikgYW5kICgzKSwgd2UgdXNlIGBtZW1jcHkoJm1hdHJp
eFswXVswXSwgJnRtcFswXVswXSwgc2l6ZW9mKE1hdHJpeDQpKWAgaW5zdGVhZCBvZiBgbWVtY3B5
KG1hdHJpeCwgdG1wLCBzaXplb2YoTWF0cml4NCkpYCwKKyAgICAgICAgc2luY2UgdGhleSBib3Ro
IGFyZSBub24gbnVsbHB0ciBhbmQgdGhlIGZvcm1lciBpcyBlYXNpZXIgdG8gdW5kZXJzdGFuZC4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25N
YXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6Om11bHRp
cGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0
aW9uTWF0cml4Lmg6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0
TWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpvcGVyYXRv
cj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpvcGVy
YXRvciA9KTogRGVsZXRlZC4KKwogMjAxOC0wNy0zMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBVc2Ugc3RhdGljIGNvbnN0IGdsb2JhbCB2YXJpYWJs
ZSBmb3IgVHJhbnNmb3JtYXRpb25NYXRyaXggaW5zdGVhZCBvZiBOZXZlckRlc3Ryb3llZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1hdGlvbk1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAppbmRleCBlYjNhNDdlYzE5ZjJiNTA5
NTFhYTUzNTNmYjYxMTNlMzU1ZjQwYzMxLi4xNDE0ZTYxZGVlZjkzNDIzYWM5OTU3N2Q2YzUyZjg5
MzNkNmVhNjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcApAQCAt
MTQxNiw3ICsxNDE2LDcgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0
cml4OjptdWx0aXBseShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYKICAgICB0bXBbM11bM10g
PSAobWF0Lm1fbWF0cml4WzNdWzBdICogbV9tYXRyaXhbMF1bM10gKyBtYXQubV9tYXRyaXhbM11b
MV0gKiBtX21hdHJpeFsxXVszXQogICAgICAgICAgICAgICAgKyBtYXQubV9tYXRyaXhbM11bMl0g
KiBtX21hdHJpeFsyXVszXSArIG1hdC5tX21hdHJpeFszXVszXSAqIG1fbWF0cml4WzNdWzNdKTsK
IAotICAgIHNldE1hdHJpeCh0bXApOworICAgIG1lbWNweSgmbV9tYXRyaXhbMF1bMF0sICZ0bXBb
MF1bMF0sIHNpemVvZihNYXRyaXg0KSk7CiAjZW5kaWYKICAgICByZXR1cm4gKnRoaXM7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zZm9ybWF0aW9uTWF0cml4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKaW5kZXggMzdkODE1OWU2YmIxMWQxM2Ri
YmMwMmVlNWM1YjFhY2QzZGIxZWI4Ni4uMTI0MjgyNjBlN2Y0MjE2NzVkNTg2NWM4MjZiZDFhMDc4
NzZkMmUzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaApAQCAtMTE2LDcg
KzExNiw2IEBAIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4IHsKICAgICB7CiAgICAgfQogCi0g
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXgoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQpIHsg
KnRoaXMgPSB0OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgVHJhbnNmb3JtYXRpb25NYXRyaXgoY29u
c3QgQWZmaW5lVHJhbnNmb3JtJik7CiAKICAgICB2b2lkIHNldE1hdHJpeChkb3VibGUgYSwgZG91
YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUgZCwgZG91YmxlIGUsIGRvdWJsZSBmKQpAQCAtMTM3LDEy
ICsxMzYsNiBAQCBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB7CiAgICAgICAgIG1fbWF0cml4
WzJdWzBdID0gbTMxOyBtX21hdHJpeFsyXVsxXSA9IG0zMjsgbV9tYXRyaXhbMl1bMl0gPSBtMzM7
IG1fbWF0cml4WzJdWzNdID0gbTM0OyAKICAgICAgICAgbV9tYXRyaXhbM11bMF0gPSBtNDE7IG1f
bWF0cml4WzNdWzFdID0gbTQyOyBtX21hdHJpeFszXVsyXSA9IG00MzsgbV9tYXRyaXhbM11bM10g
PSBtNDQ7CiAgICAgfQotICAgIAotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBvcGVyYXRvciA9
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4ICZ0KQotICAgIHsKLSAgICAgICAgc2V0TWF0cml4
KHQubV9tYXRyaXgpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQogCiAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIG1ha2VJZGVudGl0eSgpCiAgICAgewpAQCAtMzQyLDIyICszMzUsNyBA
QCBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG0yKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJu
IChtX21hdHJpeFswXVswXSA9PSBtMi5tX21hdHJpeFswXVswXSAmJgotICAgICAgICAgICAgICAg
IG1fbWF0cml4WzBdWzFdID09IG0yLm1fbWF0cml4WzBdWzFdICYmCi0gICAgICAgICAgICAgICAg
bV9tYXRyaXhbMF1bMl0gPT0gbTIubV9tYXRyaXhbMF1bMl0gJiYKLSAgICAgICAgICAgICAgICBt
X21hdHJpeFswXVszXSA9PSBtMi5tX21hdHJpeFswXVszXSAmJgotICAgICAgICAgICAgICAgIG1f
bWF0cml4WzFdWzBdID09IG0yLm1fbWF0cml4WzFdWzBdICYmCi0gICAgICAgICAgICAgICAgbV9t
YXRyaXhbMV1bMV0gPT0gbTIubV9tYXRyaXhbMV1bMV0gJiYKLSAgICAgICAgICAgICAgICBtX21h
dHJpeFsxXVsyXSA9PSBtMi5tX21hdHJpeFsxXVsyXSAmJgotICAgICAgICAgICAgICAgIG1fbWF0
cml4WzFdWzNdID09IG0yLm1fbWF0cml4WzFdWzNdICYmCi0gICAgICAgICAgICAgICAgbV9tYXRy
aXhbMl1bMF0gPT0gbTIubV9tYXRyaXhbMl1bMF0gJiYKLSAgICAgICAgICAgICAgICBtX21hdHJp
eFsyXVsxXSA9PSBtMi5tX21hdHJpeFsyXVsxXSAmJgotICAgICAgICAgICAgICAgIG1fbWF0cml4
WzJdWzJdID09IG0yLm1fbWF0cml4WzJdWzJdICYmCi0gICAgICAgICAgICAgICAgbV9tYXRyaXhb
Ml1bM10gPT0gbTIubV9tYXRyaXhbMl1bM10gJiYKLSAgICAgICAgICAgICAgICBtX21hdHJpeFsz
XVswXSA9PSBtMi5tX21hdHJpeFszXVswXSAmJgotICAgICAgICAgICAgICAgIG1fbWF0cml4WzNd
WzFdID09IG0yLm1fbWF0cml4WzNdWzFdICYmCi0gICAgICAgICAgICAgICAgbV9tYXRyaXhbM11b
Ml0gPT0gbTIubV9tYXRyaXhbM11bMl0gJiYKLSAgICAgICAgICAgICAgICBtX21hdHJpeFszXVsz
XSA9PSBtMi5tX21hdHJpeFszXVszXSk7CisgICAgICAgIHJldHVybiBtZW1jbXAoJm1fbWF0cml4
WzBdWzBdLCAmbTIubV9tYXRyaXhbMF1bMF0sIHNpemVvZihNYXRyaXg0KSkgPT0gMDsKICAgICB9
CiAKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG90aGVy
KSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQpAQCAtNDM5LDEyICs0MTcsNiBA
QCBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB7CiAgICAgICAgIHJldHVybiBGbG9hdFBvaW50
M0Qoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlc3VsdFgpLCBzdGF0aWNfY2FzdDxmbG9hdD4ocmVzdWx0
WSksIHN0YXRpY19jYXN0PGZsb2F0PihyZXN1bHRaKSk7CiAgICAgfQogCi0gICAgdm9pZCBzZXRN
YXRyaXgoY29uc3QgTWF0cml4NCBtKQotICAgIHsKLSAgICAgICAgaWYgKG0gJiYgbSAhPSBtX21h
dHJpeCkKLSAgICAgICAgICAgIG1lbWNweShtX21hdHJpeCwgbSwgc2l6ZW9mKE1hdHJpeDQpKTsK
LSAgICB9Ci0KICAgICBNYXRyaXg0IG1fbWF0cml4OwogfTsKIAo=
</data>
<flag name="review"
          id="364045"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>