<?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>80560</bug_id>
          
          <creation_ts>2012-03-07 19:03:54 -0800</creation_ts>
          <short_desc>[CG] Canvas lineDashOffset does not handle negative numbers correctly</short_desc>
          <delta_ts>2014-04-03 15:36:26 -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>Canvas</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.6</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="Ryan Carsten Schmidt">webkit</reporter>
          <assigned_to name="Dirk Schulze">krit</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>krit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>573481</commentid>
    <comment_count>0</comment_count>
      <attachid>130748</attachid>
    <who name="Ryan Carsten Schmidt">webkit</who>
    <bug_when>2012-03-07 19:03:54 -0800</bug_when>
    <thetext>Created attachment 130748
demonstration of problem

webkitLineDashOffset is sometimes not handled correctly -- or at least, is handled differently from Firefox&apos;s mozDashOffset, and I like how mozDashOffset is handled better. The attachment demonstrates the problem. Open it in Firefox 10 to see the desired rendering, then open it in WebKit to compare. I am currently using WebKit r110098.

I have only observed the problem when webkitLineDashOffset is negative and its absolute value is greater than the sum of all dash lengths. Uncommenting the commented-out line in the attachment works around the problem by setting webkitLineDashOffset to its modulo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997164</commentid>
    <comment_count>1</comment_count>
      <attachid>228507</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2014-04-03 07:25:54 -0700</bug_when>
    <thetext>Created attachment 228507
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997282</commentid>
    <comment_count>2</comment_count>
      <attachid>228507</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-04-03 13:42:28 -0700</bug_when>
    <thetext>Comment on attachment 228507
Patch

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

&gt; LayoutTests/ChangeLog:8
&gt; +        Test correct rendering of negative offset fot Canvas dash arrays.

fot!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997291</commentid>
    <comment_count>3</comment_count>
      <attachid>228540</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2014-04-03 13:53:50 -0700</bug_when>
    <thetext>Created attachment 228540
Patch for laning</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997315</commentid>
    <comment_count>4</comment_count>
      <attachid>228540</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-03 14:45:21 -0700</bug_when>
    <thetext>Comment on attachment 228540
Patch for laning

Clearing flags on attachment: 228540

Committed r166746: &lt;http://trac.webkit.org/changeset/166746&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997316</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-03 14:45:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997335</commentid>
    <comment_count>6</comment_count>
      <attachid>228540</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-03 15:36:26 -0700</bug_when>
    <thetext>Comment on attachment 228540
Patch for laning

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

&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:1189
&gt; +        for (size_t i = 0; i &lt; dashes.size(); ++i)
&gt; +            length += static_cast&lt;float&gt;(dashes[i]);

New style for loop is better here:

    for (auto&amp; dash : dashes)
        length += static_cast&lt;float&gt;(dash);

Also wondering why the static_cast&lt;float&gt; is helpful.

&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:1191
&gt; +            dashOffset = fmod(dashOffset, length) + length;

Because we use fmod here instead of fmodf, I believe this involves two conversions from float to double and one conversion from double to float.

Please change to use fmodf, unless I am mistaken about that.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>130748</attachid>
            <date>2012-03-07 19:03:54 -0800</date>
            <delta_ts>2012-03-07 19:03:54 -0800</delta_ts>
            <desc>demonstration of problem</desc>
            <filename>dash.html</filename>
            <type>text/html</type>
            <size>1289</size>
            <attacher name="Ryan Carsten Schmidt">webkit</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiPgogICAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFy
IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYW52YXMnKTsKICAgICAgICB2YXIg
d2lkdGggPSBjYW52YXMud2lkdGg7CiAgICAgICAgdmFyIGhlaWdodCA9IGNhbnZhcy5oZWlnaHQ7
CiAgICAgICAgdmFyIHhpbnNldCA9IHdpZHRoIC8gMTA7CiAgICAgICAgdmFyIHlpbnNldCA9IGhl
aWdodCAvIDEwOwogICAgICAgIHZhciBudW1MaW5lcyA9IDIwOwogICAgICAgIAogICAgICAgIGZ1
bmN0aW9uIGZpeE9mZnNldChvKSB7CiAgICAgICAgICB2YXIgZGFzaFN1bSA9IGN0eC53ZWJraXRM
aW5lRGFzaC5yZWR1Y2UoZnVuY3Rpb24oYSwgYikge3JldHVybiBhICsgYjt9LCAwKTsKICAgICAg
ICAgIHJldHVybiAoKG8gJSBkYXNoU3VtKSArIGRhc2hTdW0pICUgZGFzaFN1bTsKICAgICAgICB9
CiAgICAgICAgCiAgICAgICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOwogICAg
ICAgIGN0eC5maWxsU3R5bGUgPSAnd2hpdGUnOwogICAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCB3
aWR0aCwgaGVpZ2h0KTsKICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSAnYmxhY2snOwogICAgICAg
IGN0eC5saW5lV2lkdGggPSA1OwogICAgICAgIGN0eC5tb3pEYXNoID0gY3R4LndlYmtpdExpbmVE
YXNoID0gWzUsIDJdOwogICAgICAgIHZhciBzcGFjaW5nID0gKGhlaWdodCAtICgyICogeWluc2V0
KSkgLyBudW1MaW5lczsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bUxpbmVzOyArK2kp
IHsKICAgICAgICAgIGN0eC5iZWdpblBhdGgoKTsKICAgICAgICAgIHZhciB5ID0geWluc2V0ICsg
aSAqIHNwYWNpbmc7CiAgICAgICAgICBjdHgubW92ZVRvKHhpbnNldCwgeSk7CiAgICAgICAgICBj
dHgubGluZVRvKHdpZHRoIC0geGluc2V0LCB5KTsKICAgICAgICAgIHZhciBvZmZzZXQgPSAzICog
LWk7Ci8vICAgICAgICAgIG9mZnNldCA9IGZpeE9mZnNldChvZmZzZXQpOwogICAgICAgICAgY3R4
Lm1vekRhc2hPZmZzZXQgPSBjdHgud2Via2l0TGluZURhc2hPZmZzZXQgPSBvZmZzZXQ7CiAgICAg
ICAgICBjdHguc3Ryb2tlKCk7CiAgICAgICAgfQogICAgICB9OwogICAgPC9zY3JpcHQ+CiAgPC9o
ZWFkPgogIDxib2R5PgogICAgPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMzAwIiBoZWlnaHQ9
IjMwMCI+PC9jYW52YXMiPgogIDwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228507</attachid>
            <date>2014-04-03 07:25:54 -0700</date>
            <delta_ts>2014-04-03 13:53:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>dashArrayOffset.patch</filename>
            <type>text/plain</type>
            <size>5123</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwYjlmNWM1Li4zMjNhYjE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTQtMDQt
MDMgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAgICBbQ0ddIENhbnZh
cyBsaW5lRGFzaE9mZnNldCBkb2VzIG5vdCBoYW5kbGUgbmVnYXRpdmUgbnVtYmVycyBjb3JyZWN0
bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNTYw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCBj
b3JyZWN0IHJlbmRlcmluZyBvZiBuZWdhdGl2ZSBvZmZzZXQgZm90IENhbnZhcyBkYXNoIGFycmF5
cy4KKworICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1uZWdhdGl2ZS1saW5lRGFzaE9mZnNl
dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1uZWdh
dGl2ZS1saW5lRGFzaE9mZnNldC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9z
Y3JpcHQtdGVzdHMvY2FudmFzLW5lZ2F0aXZlLWxpbmVEYXNoT2Zmc2V0LmpzOiBBZGRlZC4KKyAg
ICAgICAgKGRhdGFUb0FycmF5KToKKyAgICAgICAgKGdldFBpeGVsKToKKyAgICAgICAgKHBpeGVs
U2hvdWxkQmUpOgorCiAyMDE0LTAzLTI3ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtDU1MgR3JpZCBMYXlvdXRdIDxzdHJpbmc+IG5vdCBhbGxv
d2VkIGluIGdyaWQte2FyZWEgfCByb3cgfCBjb2x1bW59IHN5bnRheApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLW5lZ2F0aXZlLWxpbmVEYXNoT2Zmc2V0LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1uZWdhdGl2ZS1saW5lRGFz
aE9mZnNldC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZTYzMTJhNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZh
cy1uZWdhdGl2ZS1saW5lRGFzaE9mZnNldC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAor
VGVzdCBuZWdhdGl2ZSB2YWx1ZXMgZm9yIGxpbmVEYXNoT2Zmc2V0CisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIGN0eC5saW5lRGFzaE9mZnNldCBpcyAtMTAwCitQQVNTIGdl
dFBpeGVsKDUwLDEwMCkgaXMgWzAsMCwwLDBdCitQQVNTIGdldFBpeGVsKDE1MCwxMDApIGlzIFsw
LDI1NSwwLDI1NV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtbmVnYXRp
dmUtbGluZURhc2hPZmZzZXQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1u
ZWdhdGl2ZS1saW5lRGFzaE9mZnNldC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjMwMzU3NmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9jYW52YXMtbmVnYXRpdmUtbGluZURhc2hPZmZzZXQuaHRtbApAQCAtMCwwICsxLDEwIEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvY2FudmFzLW5l
Z2F0aXZlLWxpbmVEYXNoT2Zmc2V0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtbmVn
YXRpdmUtbGluZURhc2hPZmZzZXQuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQt
dGVzdHMvY2FudmFzLW5lZ2F0aXZlLWxpbmVEYXNoT2Zmc2V0LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjgyN2QyZDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLW5lZ2F0aXZlLWxpbmVEYXNoT2Zmc2V0
LmpzCkBAIC0wLDAgKzEsMzkgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IG5lZ2F0aXZlIHZhbHVlcyBm
b3IgbGluZURhc2hPZmZzZXQiKTsKKwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2NhbnZhcycpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjYW52YXMpOworY2FudmFz
LnNldEF0dHJpYnV0ZSgnd2lkdGgnLCAnMjAwJyk7CitjYW52YXMuc2V0QXR0cmlidXRlKCdoZWln
aHQnLCAnMjAwJyk7Cit2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7CisKK2N0eC5s
aW5lV2lkdGggPSAyMDA7CitjdHguc2V0TGluZURhc2goWzEwMCwxMDBdKTsKK2N0eC5zdHJva2VT
dHlsZSA9ICJyZ2IoMCwyNTUsMCkiOworY3R4Lm1vdmVUbygwLDEwMCk7CitjdHgubGluZVRvKDIw
MCwxMDApOworY3R4LmxpbmVEYXNoT2Zmc2V0ID0gLTEwMDsKK2N0eC5zdHJva2UoKTsKKworLy8g
VmVyaWZ5IHZhbHVlLgorc2hvdWxkQmUoJ2N0eC5saW5lRGFzaE9mZnNldCcsICctMTAwJyk7CisK
K2Z1bmN0aW9uIGRhdGFUb0FycmF5KGRhdGEpIHsKKyAgICB2YXIgcmVzdWx0ID0gbmV3IEFycmF5
KGRhdGEubGVuZ3RoKQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykK
KyAgICAgICAgcmVzdWx0W2ldID0gZGF0YVtpXTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitm
dW5jdGlvbiBnZXRQaXhlbCh4LCB5KSB7CisgICAgdmFyIGRhdGEgPSBjdHguZ2V0SW1hZ2VEYXRh
KHgseSwxLDEpOworICAgIGlmICghZGF0YSkgLy8gZ2V0SW1hZ2VEYXRhIGZhaWxlZCwgd2hpY2gg
c2hvdWxkIG5ldmVyIGhhcHBlbgorICAgICAgICByZXR1cm4gWy0xLC0xLC0xLC0xXTsKKyAgICBy
ZXR1cm4gZGF0YVRvQXJyYXkoZGF0YS5kYXRhKTsKK30KKworZnVuY3Rpb24gcGl4ZWxTaG91bGRC
ZSh4LCB5LCBjb2xvdXIpIHsKKyAgICBzaG91bGRCZSgiZ2V0UGl4ZWwoIiArIFt4LCB5XSArIiki
LCAiWyIrY29sb3VyKyJdIik7Cit9CisKK3BpeGVsU2hvdWxkQmUoNTAsMTAwLFswLDAsMCwwXSk7
CitwaXhlbFNob3VsZEJlKDE1MCwxMDAsWzAsMjU1LDAsMjU1XSk7ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGNjN2M5ODcuLjM4M2QzMzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOSBAQAorMjAxNC0wNC0wMyAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3Jn
PgorCisgICAgICAgIFtDR10gQ2FudmFzIGxpbmVEYXNoT2Zmc2V0IGRvZXMgbm90IGhhbmRsZSBu
ZWdhdGl2ZSBudW1iZXJzIGNvcnJlY3RseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODA1NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDRyBpZ25vcmVzIG5lZ2F0aXZlIGRhc2ggYXJyYXkgb2Zmc2V0cy4g
Q2hlY2sgaWYgd2UgaGF2ZSBhIG5lZ2F0aXZlIG9mZnNldCwgaWYgeWVzCisgICAgICAgIHRoZW4g
Y2FsY3VsYXRlIHRoZSBsZW5ndGggb2YgdGhlIGRhc2ggYXJyYXkgYW5kIG1vZHVsbyB0aGUgZGFz
aCBhcnJheSBvZmZzZXQgd2l0aAorICAgICAgICB0aGUgZGFzaCBhcnJheSBsZW5ndGguCisKKyAg
ICAgICAgVGVzdDogZmFzdC9jYW52YXMvY2FudmFzLW5lZ2F0aXZlLWxpbmVEYXNoT2Zmc2V0Lmh0
bWwKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0TGluZURhc2gpOgorCiAy
MDE0LTA0LTAzICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnQgc2hvdWxkIHVzZSBpdGVyYXRvciBmb3IgdHJh
dmVyc2FsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDY4NGMxMDYuLjE1MTZmMjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAKQEAgLTExODMsNiArMTE4MywxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c2V0TGluZUNhcChMaW5lQ2FwIGNhcCkKIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldExpbmVE
YXNoKGNvbnN0IERhc2hBcnJheSYgZGFzaGVzLCBmbG9hdCBkYXNoT2Zmc2V0KQogeworICAgIGlm
IChkYXNoT2Zmc2V0IDwgMCkgeworICAgICAgICBmbG9hdCBsZW5ndGggPSAwOworICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGRhc2hlcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIGxl
bmd0aCArPSBzdGF0aWNfY2FzdDxmbG9hdD4oZGFzaGVzW2ldKTsKKyAgICAgICAgaWYgKGxlbmd0
aCkKKyAgICAgICAgICAgIGRhc2hPZmZzZXQgPSBmbW9kKGRhc2hPZmZzZXQsIGxlbmd0aCkgKyBs
ZW5ndGg7CisgICAgfQogICAgIENHQ29udGV4dFNldExpbmVEYXNoKHBsYXRmb3JtQ29udGV4dCgp
LCBkYXNoT2Zmc2V0LCBkYXNoZXMuZGF0YSgpLCBkYXNoZXMuc2l6ZSgpKTsKIH0KIAo=
</data>
<flag name="review"
          id="252798"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228540</attachid>
            <date>2014-04-03 13:53:50 -0700</date>
            <delta_ts>2014-04-03 15:36:26 -0700</delta_ts>
            <desc>Patch for laning</desc>
            <filename>dashArrayOffset.patch</filename>
            <type>text/plain</type>
            <size>5119</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwYjlmNWM1Li4wMWJlNWRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTQtMDQt
MDMgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAgICBbQ0ddIENhbnZh
cyBsaW5lRGFzaE9mZnNldCBkb2VzIG5vdCBoYW5kbGUgbmVnYXRpdmUgbnVtYmVycyBjb3JyZWN0
bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNTYw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAgIFRlc3QgY29y
cmVjdCByZW5kZXJpbmcgb2YgbmVnYXRpdmUgb2Zmc2V0IGZvciBDYW52YXMgZGFzaCBhcnJheXMu
CisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtbmVnYXRpdmUtbGluZURhc2hPZmZzZXQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtbmVnYXRp
dmUtbGluZURhc2hPZmZzZXQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvc2Ny
aXB0LXRlc3RzL2NhbnZhcy1uZWdhdGl2ZS1saW5lRGFzaE9mZnNldC5qczogQWRkZWQuCisgICAg
ICAgIChkYXRhVG9BcnJheSk6CisgICAgICAgIChnZXRQaXhlbCk6CisgICAgICAgIChwaXhlbFNo
b3VsZEJlKToKKwogMjAxNC0wMy0yNyAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbQ1NTIEdyaWQgTGF5b3V0XSA8c3RyaW5nPiBub3QgYWxsb3dl
ZCBpbiBncmlkLXthcmVhIHwgcm93IHwgY29sdW1ufSBzeW50YXgKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1uZWdhdGl2ZS1saW5lRGFzaE9mZnNldC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtbmVnYXRpdmUtbGluZURhc2hP
ZmZzZXQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2
MzEyYTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMt
bmVnYXRpdmUtbGluZURhc2hPZmZzZXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rl
c3QgbmVnYXRpdmUgdmFsdWVzIGZvciBsaW5lRGFzaE9mZnNldAorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBjdHgubGluZURhc2hPZmZzZXQgaXMgLTEwMAorUEFTUyBnZXRQ
aXhlbCg1MCwxMDApIGlzIFswLDAsMCwwXQorUEFTUyBnZXRQaXhlbCgxNTAsMTAwKSBpcyBbMCwy
NTUsMCwyNTVdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLW5lZ2F0aXZl
LWxpbmVEYXNoT2Zmc2V0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtbmVn
YXRpdmUtbGluZURhc2hPZmZzZXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4zMDM1NzZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
Y2FudmFzLW5lZ2F0aXZlLWxpbmVEYXNoT2Zmc2V0Lmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2NhbnZhcy1uZWdh
dGl2ZS1saW5lRGFzaE9mZnNldC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLW5lZ2F0
aXZlLWxpbmVEYXNoT2Zmc2V0LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRl
c3RzL2NhbnZhcy1uZWdhdGl2ZS1saW5lRGFzaE9mZnNldC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi44MjdkMmQyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1uZWdhdGl2ZS1saW5lRGFzaE9mZnNldC5q
cwpAQCAtMCwwICsxLDM5IEBACitkZXNjcmlwdGlvbigiVGVzdCBuZWdhdGl2ZSB2YWx1ZXMgZm9y
IGxpbmVEYXNoT2Zmc2V0Iik7CisKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdjYW52YXMnKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY2FudmFzKTsKK2NhbnZhcy5z
ZXRBdHRyaWJ1dGUoJ3dpZHRoJywgJzIwMCcpOworY2FudmFzLnNldEF0dHJpYnV0ZSgnaGVpZ2h0
JywgJzIwMCcpOwordmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOworCitjdHgubGlu
ZVdpZHRoID0gMjAwOworY3R4LnNldExpbmVEYXNoKFsxMDAsMTAwXSk7CitjdHguc3Ryb2tlU3R5
bGUgPSAicmdiKDAsMjU1LDApIjsKK2N0eC5tb3ZlVG8oMCwxMDApOworY3R4LmxpbmVUbygyMDAs
MTAwKTsKK2N0eC5saW5lRGFzaE9mZnNldCA9IC0xMDA7CitjdHguc3Ryb2tlKCk7CisKKy8vIFZl
cmlmeSB2YWx1ZS4KK3Nob3VsZEJlKCdjdHgubGluZURhc2hPZmZzZXQnLCAnLTEwMCcpOworCitm
dW5jdGlvbiBkYXRhVG9BcnJheShkYXRhKSB7CisgICAgdmFyIHJlc3VsdCA9IG5ldyBBcnJheShk
YXRhLmxlbmd0aCkKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspCisg
ICAgICAgIHJlc3VsdFtpXSA9IGRhdGFbaV07CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVu
Y3Rpb24gZ2V0UGl4ZWwoeCwgeSkgeworICAgIHZhciBkYXRhID0gY3R4LmdldEltYWdlRGF0YSh4
LHksMSwxKTsKKyAgICBpZiAoIWRhdGEpIC8vIGdldEltYWdlRGF0YSBmYWlsZWQsIHdoaWNoIHNo
b3VsZCBuZXZlciBoYXBwZW4KKyAgICAgICAgcmV0dXJuIFstMSwtMSwtMSwtMV07CisgICAgcmV0
dXJuIGRhdGFUb0FycmF5KGRhdGEuZGF0YSk7Cit9CisKK2Z1bmN0aW9uIHBpeGVsU2hvdWxkQmUo
eCwgeSwgY29sb3VyKSB7CisgICAgc2hvdWxkQmUoImdldFBpeGVsKCIgKyBbeCwgeV0gKyIpIiwg
IlsiK2NvbG91cisiXSIpOworfQorCitwaXhlbFNob3VsZEJlKDUwLDEwMCxbMCwwLDAsMF0pOwor
cGl4ZWxTaG91bGRCZSgxNTAsMTAwLFswLDI1NSwwLDI1NV0pOwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjYzdjOTg3Li40ZGRmZTg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMTQtMDQtMDMgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4K
KworICAgICAgICBbQ0ddIENhbnZhcyBsaW5lRGFzaE9mZnNldCBkb2VzIG5vdCBoYW5kbGUgbmVn
YXRpdmUgbnVtYmVycyBjb3JyZWN0bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgwNTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29u
LgorCisgICAgICAgIENHIGlnbm9yZXMgbmVnYXRpdmUgZGFzaCBhcnJheSBvZmZzZXRzLiBDaGVj
ayBpZiB3ZSBoYXZlIGEgbmVnYXRpdmUgb2Zmc2V0LCBpZiB5ZXMKKyAgICAgICAgdGhlbiBjYWxj
dWxhdGUgdGhlIGxlbmd0aCBvZiB0aGUgZGFzaCBhcnJheSBhbmQgbW9kdWxvIHRoZSBkYXNoIGFy
cmF5IG9mZnNldCB3aXRoCisgICAgICAgIHRoZSBkYXNoIGFycmF5IGxlbmd0aC4KKworICAgICAg
ICBUZXN0OiBmYXN0L2NhbnZhcy9jYW52YXMtbmVnYXRpdmUtbGluZURhc2hPZmZzZXQuaHRtbAor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRMaW5lRGFzaCk6CisKIDIwMTQt
MDQtMDMgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmRl
clNuYXBzaG90dGVkUGx1Z0luOjpwYWludCBzaG91bGQgdXNlIGl0ZXJhdG9yIGZvciB0cmF2ZXJz
YWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggNjg0YzEwNi4uMTUxNmYyNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmNwcApAQCAtMTE4Myw2ICsxMTgzLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRM
aW5lQ2FwKExpbmVDYXAgY2FwKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0TGluZURhc2go
Y29uc3QgRGFzaEFycmF5JiBkYXNoZXMsIGZsb2F0IGRhc2hPZmZzZXQpCiB7CisgICAgaWYgKGRh
c2hPZmZzZXQgPCAwKSB7CisgICAgICAgIGZsb2F0IGxlbmd0aCA9IDA7CisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgZGFzaGVzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgbGVuZ3Ro
ICs9IHN0YXRpY19jYXN0PGZsb2F0PihkYXNoZXNbaV0pOworICAgICAgICBpZiAobGVuZ3RoKQor
ICAgICAgICAgICAgZGFzaE9mZnNldCA9IGZtb2QoZGFzaE9mZnNldCwgbGVuZ3RoKSArIGxlbmd0
aDsKKyAgICB9CiAgICAgQ0dDb250ZXh0U2V0TGluZURhc2gocGxhdGZvcm1Db250ZXh0KCksIGRh
c2hPZmZzZXQsIGRhc2hlcy5kYXRhKCksIGRhc2hlcy5zaXplKCkpOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>