<?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>173566</bug_id>
          
          <creation_ts>2017-06-19 14:54:54 -0700</creation_ts>
          <short_desc>svgPath.getTotalLength() freezes webkit</short_desc>
          <delta_ts>2017-06-21 14:14:21 -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>SVG</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>Blocker</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="xerxesnoble">xerxesnoble</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>ap</cc>
    
    <cc>buildbot</cc>
    
    <cc>dino</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1320854</commentid>
    <comment_count>0</comment_count>
    <who name="xerxesnoble">xerxesnoble</who>
    <bug_when>2017-06-19 14:54:54 -0700</bug_when>
    <thetext>Browser simply just chokes and crashes while evaluating the total length of a specific path. I&apos;ve tried to remove certain points from the path to try and break down the issue. It works on every other browser I&apos;ve tested so far. Refactored my code to avoid using getTotalLength(). 

My guess is an infinite loop. 

Stack overflow example here: https://stackoverflow.com/questions/44055554/svgpath-gettotallength-crashes-safari-on-particular-path


Example code:


var myPath = document.getElementById(&quot;word&quot;);
var length = myPath.getTotalLength();
alert(length);

&lt;svg version=&quot;1.1&quot; id=&quot;Layer_1&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot; x=&quot;0px&quot; y=&quot;0px&quot; viewBox=&quot;0 0 5000 5000&quot; xml:space=&quot;preserve&quot;&gt;
  &lt;path id=&quot;word&quot; stroke=&quot;#000000&quot; fill=&quot;none&quot; stroke-width=&quot;20&quot; d=&quot;M3045.44,2522.588c-0.73,0.432-1.927,0.575-2.438,0.568 c-1.12-0.01-4.15-0.989-5.847-0.917c-0.543,0.021,0.176-0.286,0.355-0.343c1.537-0.473,5.494-1.193,7.539-0.701 C3046.408,2521.523,3046.107,2522.196,3045.44,2522.588z&quot;/&gt;
&lt;/svg&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321017</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-06-19 23:09:28 -0700</bug_when>
    <thetext>&lt;rdar://problem/32866731&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321082</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-06-20 03:17:47 -0700</bug_when>
    <thetext>I cannot reproduce a crash, looks like a permanent freeze.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321161</commentid>
    <comment_count>3</comment_count>
      <attachid>313413</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-06-20 10:47:59 -0700</bug_when>
    <thetext>Created attachment 313413
Testcase (this will cause a hang)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321162</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-06-20 10:48:26 -0700</bug_when>
    <thetext>Stuck under:

   1699 WebCore::SVGPathParser::parseCurveToCubicSegment()  (in WebCore) + 222  [0x109c2c80e]
     1699 WebCore::SVGPathTraversalStateBuilder::curveToCubic(WebCore::FloatPoint const&amp;, WebCore::FloatPoint const&amp;, WebCore::FloatPoint const&amp;, WebCore::PathCoordinateMode)  (in WebCore) + 62  [0x10ac65ede]
       1699 WebCore::PathTraversalState::processPathElement(WebCore::PathElementType, WebCore::FloatPoint const*)  (in WebCore) + 101  [0x10a8cd2c5]
         1699 WebCore::PathTraversalState::appendPathElement(WebCore::PathElementType, WebCore::FloatPoint const*)  (in WebCore) + 151  [0x10a8cd1f7]
           1699 WebCore::PathTraversalState::cubicBezierTo(WebCore::FloatPoint const&amp;, WebCore::FloatPoint const&amp;, WebCore::FloatPoint const&amp;)  (in WebCore) + 390,383,...  [0x10a8cce16,0x10a8cce0f,...]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321289</commentid>
    <comment_count>5</comment_count>
    <who name="xerxesnoble">xerxesnoble</who>
    <bug_when>2017-06-20 16:20:02 -0700</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #2)
&gt; I cannot reproduce a crash, looks like a permanent freeze.

Yes, sorry poor choice of working there. There is no crash- it&apos;s just completely stalled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321351</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-06-20 18:52:36 -0700</bug_when>
    <thetext>In curveLength(), length = curve.approximateDistance(); is 0, so we never make progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321353</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-06-20 18:59:36 -0700</bug_when>
    <thetext>Actually length is just small value, but after the split, leftCurve is empty, and rightCurve is the same as the original curve, so we make no progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321354</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-06-20 19:07:09 -0700</bug_when>
    <thetext>(lldb) p curve
(WebCore::CubicBezier) $6 = {
  start = (m_x = 3036.95605, m_y = 2522.19727)
  control1 = (m_x = 3036.95605, m_y = 2522.19727)
  control2 = (m_x = 3036.95581, m_y = 2522.19727)
  end = (m_x = 3036.95581, m_y = 2522.19702)
}
(lldb) p leftCurve
(WebCore::CubicBezier) $7 = {
  start = (m_x = 3036.95605, m_y = 2522.19727)
  control1 = (m_x = 3036.95605, m_y = 2522.19727)
  control2 = (m_x = 3036.95605, m_y = 2522.19727)
  end = (m_x = 3036.95605, m_y = 2522.19727)
}
(lldb) p rightCurve
(WebCore::CubicBezier) $8 = {
  start = (m_x = 3036.95605, m_y = 2522.19727)
  control1 = (m_x = 3036.95605, m_y = 2522.19727)
  control2 = (m_x = 3036.95581, m_y = 2522.19727)
  end = (m_x = 3036.95581, m_y = 2522.19702)
}

In floats, (3036.95605 + 3036.95581) / 2.0f == 3036.95605 so split() returns a curve that matches the original.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321355</commentid>
    <comment_count>9</comment_count>
      <attachid>313467</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-06-20 19:16:06 -0700</bug_when>
    <thetext>Created attachment 313467
Possible patch, needs test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321356</commentid>
    <comment_count>10</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-20 19:17:35 -0700</bug_when>
    <thetext>Attachment 313467 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 2 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>1321605</commentid>
    <comment_count>11</comment_count>
      <attachid>313545</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-06-21 13:51:23 -0700</bug_when>
    <thetext>Created attachment 313545
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321608</commentid>
    <comment_count>12</comment_count>
      <attachid>313545</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-06-21 13:52:54 -0700</bug_when>
    <thetext>Comment on attachment 313545
Patch

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

&gt; Source/WebCore/platform/graphics/PathTraversalState.cpp:52
&gt; +    bool operator ==(const QuadraticBezier&amp; rhs)

Nit: operator==</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321625</commentid>
    <comment_count>13</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-06-21 14:14:21 -0700</bug_when>
    <thetext>https://trac.webkit.org/r218648</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>313413</attachid>
            <date>2017-06-20 10:47:59 -0700</date>
            <delta_ts>2017-06-20 10:47:59 -0700</delta_ts>
            <desc>Testcase (this will cause a hang)</desc>
            <filename>bad-path-length.html</filename>
            <type>text/html</type>
            <size>664</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+Cgo8aHRtbD4KPGJvZHk+CiAgICA8c3ZnIHZlcnNpb249IjEuMSIgaWQ9
IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIw
IDAgNTAwMCA1MDAwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4KICAgICAgPHBhdGggaWQ9IndvcmQi
IHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIyMCIgZD0iTTMwNDUu
NDQsMjUyMi41ODhjLTAuNzMsMC40MzItMS45MjcsMC41NzUtMi40MzgsMC41NjggYy0xLjEyLTAu
MDEtNC4xNS0wLjk4OS01Ljg0Ny0wLjkxN2MtMC41NDMsMC4wMjEsMC4xNzYtMC4yODYsMC4zNTUt
MC4zNDNjMS41MzctMC40NzMsNS40OTQtMS4xOTMsNy41MzktMC43MDEgQzMwNDYuNDA4LDI1MjEu
NTIzLDMwNDYuMTA3LDI1MjIuMTk2LDMwNDUuNDQsMjUyMi41ODh6Ii8+CiAgICA8L3N2Zz4KICAg
IDxzY3JpcHQ+CiAgICB2YXIgbXlQYXRoID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndvcmQi
KTsKICAgIHZhciBsZW5ndGggPSBteVBhdGguZ2V0VG90YWxMZW5ndGgoKTsKICAgIGFsZXJ0KGxl
bmd0aCk7CiAgICA8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313467</attachid>
            <date>2017-06-20 19:16:06 -0700</date>
            <delta_ts>2017-06-21 13:51:22 -0700</delta_ts>
            <desc>Possible patch, needs test case.</desc>
            <filename>bug-173566-20170620191605.patch</filename>
            <type>text/plain</type>
            <size>3833</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWY0YmYxY2QxNzNjMTdk
NDY2NjQxZjJiNWU1NmEyMmIzN2M0M2NhMy4uMTBhYzNjYWJhYjQ2YTBhZjgyZmYyMjE5NmU4YTRi
ODFkNmQ2OWNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTA2LTIwICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIHN2Z1BhdGguZ2V0
VG90YWxMZW5ndGgoKSBmcmVlemVzIHdlYmtpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNTY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UXVhZHJhdGljQmV6aWVyOjpvcGVyYXRvciA9PSk6CisgICAgICAgIChXZWJDb3JlOjpRdWFk
cmF0aWNCZXppZXI6OnNwbGl0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1YmljQmV6aWVyOjpvcGVy
YXRvciA9PSk6CisgICAgICAgIChXZWJDb3JlOjpDdWJpY0Jlemllcjo6c3BsaXQpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3VydmVMZW5ndGgpOgorCiAyMDE3LTA2LTIwICBEYW5pZWwgQmF0ZXMgIDxk
YWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBIYXZlIEZyYW1lTG9hZFJlcXVlc3QgdGFrZXMg
YSBGcmFtZSYgaW5zdGVhZCBvZiBhIEZyYW1lKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAKaW5kZXggYzZiZjdhNmJm
NDMxMDgzNWViNDVlOTRiZmQ4MzAwOTgzYThhY2EzOS4uYjkxMmEzOTExNmQ3NmRjODYxNWE0NTZk
ZmMzZGQxZjFhMDk3ZTM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwCkBAIC00OCwxMyArNDgsMjAgQEAgc3Ry
dWN0IFF1YWRyYXRpY0JlemllciB7CiAgICAgICAgICwgZW5kKGUpCiAgICAgewogICAgIH0KKwor
ICAgIGJvb2wgb3BlcmF0b3IgPT0oY29uc3QgUXVhZHJhdGljQmV6aWVyJiByaHMpCisgICAgewor
ICAgICAgICByZXR1cm4gc3RhcnQgPT0gcmhzLnN0YXJ0CisgICAgICAgICAgICAmJiBjb250cm9s
ID09IHJocy5jb250cm9sCisgICAgICAgICAgICAmJiBlbmQgPT0gcmhzLmVuZDsKKyAgICB9CiAg
ICAgCiAgICAgZmxvYXQgYXBwcm94aW1hdGVEaXN0YW5jZSgpIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4gZGlzdGFuY2VMaW5lKHN0YXJ0LCBjb250cm9sKSArIGRpc3RhbmNlTGluZShjb250
cm9sLCBlbmQpOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNwbGl0KFF1YWRyYXRpY0JlemllciYg
bGVmdCwgUXVhZHJhdGljQmV6aWVyJiByaWdodCkgY29uc3QKKyAgICBib29sIHNwbGl0KFF1YWRy
YXRpY0JlemllciYgbGVmdCwgUXVhZHJhdGljQmV6aWVyJiByaWdodCkgY29uc3QKICAgICB7CiAg
ICAgICAgIGxlZnQuY29udHJvbCA9IG1pZFBvaW50KHN0YXJ0LCBjb250cm9sKTsKICAgICAgICAg
cmlnaHQuY29udHJvbCA9IG1pZFBvaW50KGNvbnRyb2wsIGVuZCk7CkBAIC02NSw2ICs3Miw4IEBA
IHN0cnVjdCBRdWFkcmF0aWNCZXppZXIgewogCiAgICAgICAgIGxlZnQuc3RhcnQgPSBzdGFydDsK
ICAgICAgICAgcmlnaHQuZW5kID0gZW5kOworCisgICAgICAgIHJldHVybiAhKGxlZnQgPT0gKnRo
aXMpICYmICEocmlnaHQgPT0gKnRoaXMpOwogICAgIH0KICAgICAKICAgICBGbG9hdFBvaW50IHN0
YXJ0OwpAQCAtODEsMTMgKzkwLDIxIEBAIHN0cnVjdCBDdWJpY0JlemllciB7CiAgICAgICAgICwg
ZW5kKGUpCiAgICAgewogICAgIH0KLSAgICAKKworICAgIGJvb2wgb3BlcmF0b3IgPT0oY29uc3Qg
Q3ViaWNCZXppZXImIHJocykKKyAgICB7CisgICAgICAgIHJldHVybiBzdGFydCA9PSByaHMuc3Rh
cnQKKyAgICAgICAgICAgICYmIGNvbnRyb2wxID09IHJocy5jb250cm9sMQorICAgICAgICAgICAg
JiYgY29udHJvbDIgPT0gcmhzLmNvbnRyb2wyCisgICAgICAgICAgICAmJiBlbmQgPT0gcmhzLmVu
ZDsKKyAgICB9CisKICAgICBmbG9hdCBhcHByb3hpbWF0ZURpc3RhbmNlKCkgY29uc3QKICAgICB7
CiAgICAgICAgIHJldHVybiBkaXN0YW5jZUxpbmUoc3RhcnQsIGNvbnRyb2wxKSArIGRpc3RhbmNl
TGluZShjb250cm9sMSwgY29udHJvbDIpICsgZGlzdGFuY2VMaW5lKGNvbnRyb2wyLCBlbmQpOwog
ICAgIH0KICAgICAgICAgCi0gICAgdm9pZCBzcGxpdChDdWJpY0JlemllciYgbGVmdCwgQ3ViaWNC
ZXppZXImIHJpZ2h0KSBjb25zdAorICAgIGJvb2wgc3BsaXQoQ3ViaWNCZXppZXImIGxlZnQsIEN1
YmljQmV6aWVyJiByaWdodCkgY29uc3QKICAgICB7ICAgIAogICAgICAgICBGbG9hdFBvaW50IHN0
YXJ0VG9Db250cm9sMSA9IG1pZFBvaW50KGNvbnRyb2wxLCBjb250cm9sMik7CiAgICAgICAgIApA
QCAtMTAyLDYgKzExOSw4IEBAIHN0cnVjdCBDdWJpY0JlemllciB7CiAgICAgICAgIEZsb2F0UG9p
bnQgbGVmdENvbnRyb2wyVG9SaWdodENvbnRyb2wxID0gbWlkUG9pbnQobGVmdC5jb250cm9sMiwg
cmlnaHQuY29udHJvbDEpOwogICAgICAgICBsZWZ0LmVuZCA9IGxlZnRDb250cm9sMlRvUmlnaHRD
b250cm9sMTsKICAgICAgICAgcmlnaHQuc3RhcnQgPSBsZWZ0Q29udHJvbDJUb1JpZ2h0Q29udHJv
bDE7CisKKyAgICAgICAgcmV0dXJuICEobGVmdCA9PSAqdGhpcykgJiYgIShyaWdodCA9PSAqdGhp
cyk7CiAgICAgfQogICAgIAogICAgIEZsb2F0UG9pbnQgc3RhcnQ7CkBAIC0xMjcsMTAgKzE0Niwx
MCBAQCBzdGF0aWMgZmxvYXQgY3VydmVMZW5ndGgoY29uc3QgUGF0aFRyYXZlcnNhbFN0YXRlJiB0
cmF2ZXJzYWxTdGF0ZSwgY29uc3QgQ3VydmVUeQogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAg
IGZsb2F0IGxlbmd0aCA9IGN1cnZlLmFwcHJveGltYXRlRGlzdGFuY2UoKTsKIAotICAgICAgICBp
ZiAoKGxlbmd0aCAtIGRpc3RhbmNlTGluZShjdXJ2ZS5zdGFydCwgY3VydmUuZW5kKSkgPiBrUGF0
aFNlZ21lbnRMZW5ndGhUb2xlcmFuY2UgJiYgY3VydmVTdGFjay5zaXplKCkgPCBjdXJ2ZVN0YWNr
RGVwdGhMaW1pdCkgewotICAgICAgICAgICAgQ3VydmVUeXBlIGxlZnRDdXJ2ZTsKLSAgICAgICAg
ICAgIEN1cnZlVHlwZSByaWdodEN1cnZlOwotICAgICAgICAgICAgY3VydmUuc3BsaXQobGVmdEN1
cnZlLCByaWdodEN1cnZlKTsKKyAgICAgICAgQ3VydmVUeXBlIGxlZnRDdXJ2ZTsKKyAgICAgICAg
Q3VydmVUeXBlIHJpZ2h0Q3VydmU7CisKKyAgICAgICAgaWYgKChsZW5ndGggLSBkaXN0YW5jZUxp
bmUoY3VydmUuc3RhcnQsIGN1cnZlLmVuZCkpID4ga1BhdGhTZWdtZW50TGVuZ3RoVG9sZXJhbmNl
ICYmIGN1cnZlU3RhY2suc2l6ZSgpIDwgY3VydmVTdGFja0RlcHRoTGltaXQgJiYgY3VydmUuc3Bs
aXQobGVmdEN1cnZlLCByaWdodEN1cnZlKSkgewogICAgICAgICAgICAgY3VydmUgPSBsZWZ0Q3Vy
dmU7CiAgICAgICAgICAgICBjdXJ2ZVN0YWNrLmFwcGVuZChyaWdodEN1cnZlKTsKICAgICAgICAg
ICAgIGNvbnRpbnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313545</attachid>
            <date>2017-06-21 13:51:23 -0700</date>
            <delta_ts>2017-06-21 13:52:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173566-20170621135123.patch</filename>
            <type>text/plain</type>
            <size>6137</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWY0YmYxY2QxNzNjMTdk
NDY2NjQxZjJiNWU1NmEyMmIzN2M0M2NhMy4uYzVhZWRhYjIyODg3Mjk0NjRjZTExYzFjNGJkMzY2
MTYxN2MwMGY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTA2LTIwICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIHN2Z1BhdGguZ2V0
VG90YWxMZW5ndGgoKSBmcmVlemVzIHdlYmtpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNTY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRW5zdXJlIHRoYXQgY3VydmVMZW5ndGgoKSBwcm9ncmVzc2Vz
IGJ5IG1ha2luZyBzcGxpdCgpIHJldHVybiBhIGJvb2wgaW5kaWNhdGluZworICAgICAgICB3aGV0
aGVyIGVpdGhlciBvZiB0aGUgcmVzdWx0aW5nIGN1cnZlcyBhcmUgdGhlIHNhbWUgYXMgdGhlIG9y
aWdpbmFsLiBUaGlzIGNhbiBoYXBwZW4KKyAgICAgICAgd2hlbiBtaWRQb2ludCgpIG9uIHR3byBj
bG9zZSBwb2ludHMgcmV0dXJucyBhIHBvaW50IHRoYXQgaXMgdGhlIHNhbWUgYXMgb25lIG9mIHRo
ZQorICAgICAgICBhcmd1bWVudHMgYmVjYXVzZSBvZiBmbG9hdGluZy1wb2ludCBwcmVjaXNpb24g
bGltaXRhdGlvbnMuCisKKyAgICAgICAgVGVzdDogc3ZnL2N1c3RvbS9wYXRoLWdldFRvdGFsTGVu
Z3RoLWhhbmcuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNh
bFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF1YWRyYXRpY0Jlemllcjo6b3BlcmF0b3Ig
PT0pOgorICAgICAgICAoV2ViQ29yZTo6UXVhZHJhdGljQmV6aWVyOjpzcGxpdCk6CisgICAgICAg
IChXZWJDb3JlOjpDdWJpY0Jlemllcjo6b3BlcmF0b3IgPT0pOgorICAgICAgICAoV2ViQ29yZTo6
Q3ViaWNCZXppZXI6OnNwbGl0KToKKyAgICAgICAgKFdlYkNvcmU6OmN1cnZlTGVuZ3RoKToKKwog
MjAxNy0wNi0yMCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAg
SGF2ZSBGcmFtZUxvYWRSZXF1ZXN0IHRha2VzIGEgRnJhbWUmIGluc3RlYWQgb2YgYSBGcmFtZSoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJz
YWxTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVy
c2FsU3RhdGUuY3BwCmluZGV4IGM2YmY3YTZiZjQzMTA4MzVlYjQ1ZTk0YmZkODMwMDk4M2E4YWNh
MzkuLmI5MTJhMzkxMTZkNzZkYzg2MTVhNDU2ZGZjM2RkMWYxYTA5N2UzNTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRl
LmNwcApAQCAtNDgsMTMgKzQ4LDIwIEBAIHN0cnVjdCBRdWFkcmF0aWNCZXppZXIgewogICAgICAg
ICAsIGVuZChlKQogICAgIHsKICAgICB9CisKKyAgICBib29sIG9wZXJhdG9yID09KGNvbnN0IFF1
YWRyYXRpY0JlemllciYgcmhzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXJ0ID09IHJocy5z
dGFydAorICAgICAgICAgICAgJiYgY29udHJvbCA9PSByaHMuY29udHJvbAorICAgICAgICAgICAg
JiYgZW5kID09IHJocy5lbmQ7CisgICAgfQogICAgIAogICAgIGZsb2F0IGFwcHJveGltYXRlRGlz
dGFuY2UoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGRpc3RhbmNlTGluZShzdGFydCwg
Y29udHJvbCkgKyBkaXN0YW5jZUxpbmUoY29udHJvbCwgZW5kKTsKICAgICB9CiAgICAgCi0gICAg
dm9pZCBzcGxpdChRdWFkcmF0aWNCZXppZXImIGxlZnQsIFF1YWRyYXRpY0JlemllciYgcmlnaHQp
IGNvbnN0CisgICAgYm9vbCBzcGxpdChRdWFkcmF0aWNCZXppZXImIGxlZnQsIFF1YWRyYXRpY0Jl
emllciYgcmlnaHQpIGNvbnN0CiAgICAgewogICAgICAgICBsZWZ0LmNvbnRyb2wgPSBtaWRQb2lu
dChzdGFydCwgY29udHJvbCk7CiAgICAgICAgIHJpZ2h0LmNvbnRyb2wgPSBtaWRQb2ludChjb250
cm9sLCBlbmQpOwpAQCAtNjUsNiArNzIsOCBAQCBzdHJ1Y3QgUXVhZHJhdGljQmV6aWVyIHsKIAog
ICAgICAgICBsZWZ0LnN0YXJ0ID0gc3RhcnQ7CiAgICAgICAgIHJpZ2h0LmVuZCA9IGVuZDsKKwor
ICAgICAgICByZXR1cm4gIShsZWZ0ID09ICp0aGlzKSAmJiAhKHJpZ2h0ID09ICp0aGlzKTsKICAg
ICB9CiAgICAgCiAgICAgRmxvYXRQb2ludCBzdGFydDsKQEAgLTgxLDEzICs5MCwyMSBAQCBzdHJ1
Y3QgQ3ViaWNCZXppZXIgewogICAgICAgICAsIGVuZChlKQogICAgIHsKICAgICB9Ci0gICAgCisK
KyAgICBib29sIG9wZXJhdG9yID09KGNvbnN0IEN1YmljQmV6aWVyJiByaHMpCisgICAgeworICAg
ICAgICByZXR1cm4gc3RhcnQgPT0gcmhzLnN0YXJ0CisgICAgICAgICAgICAmJiBjb250cm9sMSA9
PSByaHMuY29udHJvbDEKKyAgICAgICAgICAgICYmIGNvbnRyb2wyID09IHJocy5jb250cm9sMgor
ICAgICAgICAgICAgJiYgZW5kID09IHJocy5lbmQ7CisgICAgfQorCiAgICAgZmxvYXQgYXBwcm94
aW1hdGVEaXN0YW5jZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gZGlzdGFuY2VMaW5l
KHN0YXJ0LCBjb250cm9sMSkgKyBkaXN0YW5jZUxpbmUoY29udHJvbDEsIGNvbnRyb2wyKSArIGRp
c3RhbmNlTGluZShjb250cm9sMiwgZW5kKTsKICAgICB9CiAgICAgICAgIAotICAgIHZvaWQgc3Bs
aXQoQ3ViaWNCZXppZXImIGxlZnQsIEN1YmljQmV6aWVyJiByaWdodCkgY29uc3QKKyAgICBib29s
IHNwbGl0KEN1YmljQmV6aWVyJiBsZWZ0LCBDdWJpY0JlemllciYgcmlnaHQpIGNvbnN0CiAgICAg
eyAgICAKICAgICAgICAgRmxvYXRQb2ludCBzdGFydFRvQ29udHJvbDEgPSBtaWRQb2ludChjb250
cm9sMSwgY29udHJvbDIpOwogICAgICAgICAKQEAgLTEwMiw2ICsxMTksOCBAQCBzdHJ1Y3QgQ3Vi
aWNCZXppZXIgewogICAgICAgICBGbG9hdFBvaW50IGxlZnRDb250cm9sMlRvUmlnaHRDb250cm9s
MSA9IG1pZFBvaW50KGxlZnQuY29udHJvbDIsIHJpZ2h0LmNvbnRyb2wxKTsKICAgICAgICAgbGVm
dC5lbmQgPSBsZWZ0Q29udHJvbDJUb1JpZ2h0Q29udHJvbDE7CiAgICAgICAgIHJpZ2h0LnN0YXJ0
ID0gbGVmdENvbnRyb2wyVG9SaWdodENvbnRyb2wxOworCisgICAgICAgIHJldHVybiAhKGxlZnQg
PT0gKnRoaXMpICYmICEocmlnaHQgPT0gKnRoaXMpOwogICAgIH0KICAgICAKICAgICBGbG9hdFBv
aW50IHN0YXJ0OwpAQCAtMTI3LDEwICsxNDYsMTAgQEAgc3RhdGljIGZsb2F0IGN1cnZlTGVuZ3Ro
KGNvbnN0IFBhdGhUcmF2ZXJzYWxTdGF0ZSYgdHJhdmVyc2FsU3RhdGUsIGNvbnN0IEN1cnZlVHkK
ICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBmbG9hdCBsZW5ndGggPSBjdXJ2ZS5hcHByb3hp
bWF0ZURpc3RhbmNlKCk7CiAKLSAgICAgICAgaWYgKChsZW5ndGggLSBkaXN0YW5jZUxpbmUoY3Vy
dmUuc3RhcnQsIGN1cnZlLmVuZCkpID4ga1BhdGhTZWdtZW50TGVuZ3RoVG9sZXJhbmNlICYmIGN1
cnZlU3RhY2suc2l6ZSgpIDwgY3VydmVTdGFja0RlcHRoTGltaXQpIHsKLSAgICAgICAgICAgIEN1
cnZlVHlwZSBsZWZ0Q3VydmU7Ci0gICAgICAgICAgICBDdXJ2ZVR5cGUgcmlnaHRDdXJ2ZTsKLSAg
ICAgICAgICAgIGN1cnZlLnNwbGl0KGxlZnRDdXJ2ZSwgcmlnaHRDdXJ2ZSk7CisgICAgICAgIEN1
cnZlVHlwZSBsZWZ0Q3VydmU7CisgICAgICAgIEN1cnZlVHlwZSByaWdodEN1cnZlOworCisgICAg
ICAgIGlmICgobGVuZ3RoIC0gZGlzdGFuY2VMaW5lKGN1cnZlLnN0YXJ0LCBjdXJ2ZS5lbmQpKSA+
IGtQYXRoU2VnbWVudExlbmd0aFRvbGVyYW5jZSAmJiBjdXJ2ZVN0YWNrLnNpemUoKSA8IGN1cnZl
U3RhY2tEZXB0aExpbWl0ICYmIGN1cnZlLnNwbGl0KGxlZnRDdXJ2ZSwgcmlnaHRDdXJ2ZSkpIHsK
ICAgICAgICAgICAgIGN1cnZlID0gbGVmdEN1cnZlOwogICAgICAgICAgICAgY3VydmVTdGFjay5h
cHBlbmQocmlnaHRDdXJ2ZSk7CiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzNTU3MDE5
MWMyZDc5N2NmMjhjMjU2Mjg5YmIxNzM5YWM3MWY1YTc4Li4zZTRiMGM4MGFmOGY2MGY1N2QyMWUz
ZjgwN2EzMmFkY2U1N2FiY2E4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDYtMjEgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgc3ZnUGF0aC5n
ZXRUb3RhbExlbmd0aCgpIGZyZWV6ZXMgd2Via2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM1NjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHN2Zy9jdXN0b20vcGF0aC1nZXRUb3RhbExlbmd0aC1o
YW5nLmh0bWw6IEFkZGVkLgorCiAyMDE3LTA2LTIwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMjg2MjY1Mj4gW1JFR1JF
U1NJT05dIHIyMTgzNzQ6IGZhc3QvZXZlbnRzL2lvcy9yb3RhdGlvbi9sYXlvdXQtdmlld3BvcnQt
ZHVyaW5nLXNhZmFyaS10eXBlLXJvdGF0aW9uLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N2Zy9jdXN0b20vcGF0aC1nZXRUb3RhbExlbmd0aC1oYW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dmcvY3VzdG9tL3BhdGgtZ2V0VG90YWxMZW5ndGgtaGFuZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmNThk
ZTUzNDhiY2RmOTVjZWM0ZGMzMDU1YmViOTU2OTg1YjgxODgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdmcvY3VzdG9tL3BhdGgtZ2V0VG90YWxMZW5ndGgtaGFuZy5odG1sCkBAIC0w
LDAgKzEsMjMgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxzdHlsZT4KKyAgICBzdmcg
eworICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyAgICAgICAgd2lkdGg6IDQwMHB4
OworICAgICAgICBoZWlnaHQ6IDQwMHB4OworICAgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKyAgICA8
cD5UaGlzIHRlc3Qgc2hvdWxkIG5vdCBoYW5nLjwvcD4KKyAgICA8cD5QYXRoIGxlbmd0aCBpcyA8
c3BhbiBpZD0icmVzdWx0Ij51bmNvbXB1dGVkPC9zcGFuPjwvcD4uCisgICAgPHN2ZyB2ZXJzaW9u
PSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAg
NTAwMCA1MDAwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4KKyAgICAgIDxwYXRoIGlkPSJ3b3JkIiBz
dHJva2U9IiMwMDAwMDAiIGZpbGw9Im5vbmUiIHN0cm9rZS13aWR0aD0iMjAiIGQ9Ik0zMDQ1LjQ0
LDI1MjIuNTg4Yy0wLjczLDAuNDMyLTEuOTI3LDAuNTc1LTIuNDM4LDAuNTY4IGMtMS4xMi0wLjAx
LTQuMTUtMC45ODktNS44NDctMC45MTdjLTAuNTQzLDAuMDIxLDAuMTc2LTAuMjg2LDAuMzU1LTAu
MzQzYzEuNTM3LTAuNDczLDUuNDk0LTEuMTkzLDcuNTM5LTAuNzAxIEMzMDQ2LjQwOCwyNTIxLjUy
MywzMDQ2LjEwNywyNTIyLjE5NiwzMDQ1LjQ0LDI1MjIuNTg4eiIvPgorICAgIDwvc3ZnPgorICAg
IDxzY3JpcHQ+CisgICAgdmFyIG15UGF0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3b3Jk
Iik7CisgICAgdmFyIGxlbmd0aCA9IG15UGF0aC5nZXRUb3RhbExlbmd0aCgpOworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS50ZXh0Q29udGVudCA9IGxlbmd0aC50b0ZpeGVk
KDMpOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="334428"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>