<?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>154772</bug_id>
          
          <creation_ts>2016-02-26 21:43:16 -0800</creation_ts>
          <short_desc>Optimize parseHTMLInteger()</short_desc>
          <delta_ts>2016-02-27 10:30:56 -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>DOM</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1168820</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-02-26 21:43:16 -0800</bug_when>
    <thetext>Optimize parseHTMLInteger() now that it is used a lot more and that it has decent API test coverage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168823</commentid>
    <comment_count>1</comment_count>
      <attachid>272400</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-02-26 21:53:55 -0800</bug_when>
    <thetext>Created attachment 272400
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168831</commentid>
    <comment_count>2</comment_count>
      <attachid>272400</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-02-26 22:04:10 -0800</bug_when>
    <thetext>Comment on attachment 272400
Patch

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

&gt; Source/WebCore/html/parser/HTMLParserIdioms.cpp:176
&gt; +    value = charactersToIntStrict(numberStart, position - numberStart, &amp;ok);

Can we just compute the result in the above loop instead of calling this function?
We&apos;re just parsing decimal number here and we&apos;ve already traversed the entire string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168844</commentid>
    <comment_count>3</comment_count>
      <attachid>272409</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-02-26 22:34:16 -0800</bug_when>
    <thetext>Created attachment 272409
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168846</commentid>
    <comment_count>4</comment_count>
      <attachid>272409</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-02-26 22:49:58 -0800</bug_when>
    <thetext>Comment on attachment 272409
Patch

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

&gt; Source/WebCore/html/parser/HTMLParserIdioms.cpp:178
&gt; +    int result = 0;

Why don&apos;t we use unsigned here

&gt; Source/WebCore/html/parser/HTMLParserIdioms.cpp:182
&gt; +        if (result &gt; maxMultiplier || (result == maxMultiplier &amp;&amp; digitValue &gt; (intMax % base) + isNegative))

So that we can simplify the second condition here?

Now that I&apos;m seeing this code for overflow check, perhaps calling charactersToIntStrict wasn&apos;t that bad...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168874</commentid>
    <comment_count>5</comment_count>
      <attachid>272418</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-02-27 09:43:13 -0800</bug_when>
    <thetext>Created attachment 272418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168879</commentid>
    <comment_count>6</comment_count>
      <attachid>272418</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-27 10:30:52 -0800</bug_when>
    <thetext>Comment on attachment 272418
Patch

Clearing flags on attachment: 272418

Committed r197255: &lt;http://trac.webkit.org/changeset/197255&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168880</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-27 10:30:56 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272400</attachid>
            <date>2016-02-26 21:53:55 -0800</date>
            <delta_ts>2016-02-26 22:34:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154772-20160226215338.patch</filename>
            <type>text/plain</type>
            <size>3891</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3MjI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODY4NDkyZmE1Mzk0NTMz
YjYyMTZjNmZmNDJhYmJjYWIyMTAzMjRkNS4uMDljNmUwMWNkYzExNjgzNmQyMjE0NmRmOGU0MzAx
MzQ3OTMxN2I3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIzIEBACiAyMDE2LTAyLTI2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgT3B0aW1pemUgcGFyc2VIVE1M
SW50ZWdlcigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTQ3NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBPcHRpbWl6ZSBwYXJzZUhUTUxJbnRlZ2VyKCkgYSBiaXQgbm93IHRoYXQgaXQgaXMgdXNlZCBh
IGxvdCBtb3JlIGFuZAorICAgICAgICB0aGF0IGl0IGhhcyBkZWNlbnQgQVBJIHRlc3QgY292ZXJh
Z2UuIEluIHBhcnRpY3VsYXIsIHdlIG5vdzoKKyAgICAgICAgLSBBdm9pZCB1c2luZyBhIFN0cmlu
Z0J1aWxkZXIgZm9yIHRoZSBkaWdpdHMgYW5kIG1lcmVseSBjYWxsCisgICAgICAgICAgY2hhcmFj
dGVyc1RvSW50U3RyaWN0KCkgd2l0aCBhIHBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBudW1i
ZXIKKyAgICAgICAgICBpbiB0aGUgaW5wdXQgc3RyaW5nLCBhcyB3ZWxsIGFzIGl0cyBsZW5ndGgu
CisgICAgICAgIC0gR2V0IHJpZCBvZiBhIGlzOEJpdCgpIGJyYW5jaC4KKworICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VI
VE1MSW50ZWdlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSFRNTEludGVnZXIp
OgorCisyMDE2LTAyLTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAg
ICAgQWRkIEFQSSB0ZXN0IGNvdmVyYWdlIGZvciBwYXJzZUhUTUxJbnRlZ2VyIC8gcGFyc2VIVE1M
Tm9uTmVnYXRpdmVJbnRlZ2VyCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTQ3MTQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VySWRpb21zLmNwcAppbmRleCBlNTk0YjlmYTJhYmY1M2YwNTczNDQwOWJjYjFhMTNlODQ4
MTUwY2ZiLi4wMmFmNmY5Y2I5NDY5ZjlhMzI0Y2NmYzU1NmU0Y2M2MGI0NWFmZTRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcApAQCAtMTU1
LDY2ICsxNTUsNDEgQEAgZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiBzdGF0aWMg
Ym9vbCBwYXJzZUhUTUxJbnRlZ2VySW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSogcG9zaXRp
b24sIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCwgaW50JiB2YWx1ZSkKIHsKLSAgICAvLyBTdGVw
IDMKLSAgICBib29sIGlzUG9zaXRpdmUgPSB0cnVlOwotCi0gICAgLy8gU3RlcCA0Ci0gICAgd2hp
bGUgKHBvc2l0aW9uIDwgZW5kKSB7Ci0gICAgICAgIGlmICghaXNIVE1MU3BhY2UoKnBvc2l0aW9u
KSkKLSAgICAgICAgICAgIGJyZWFrOworICAgIHdoaWxlIChwb3NpdGlvbiA8IGVuZCAmJiBpc0hU
TUxTcGFjZSgqcG9zaXRpb24pKQogICAgICAgICArK3Bvc2l0aW9uOwotICAgIH0KIAotICAgIC8v
IFN0ZXAgNQogICAgIGlmIChwb3NpdGlvbiA9PSBlbmQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihwb3NpdGlvbiA8IGVuZCk7CiAK
LSAgICAvLyBTdGVwIDYKLSAgICBpZiAoKnBvc2l0aW9uID09ICctJykgewotICAgICAgICBpc1Bv
c2l0aXZlID0gZmFsc2U7CisgICAgYXV0byogbnVtYmVyU3RhcnQgPSBwb3NpdGlvbjsKKyAgICBp
ZiAoKnBvc2l0aW9uID09ICctJyB8fCAqcG9zaXRpb24gPT0gJysnKQogICAgICAgICArK3Bvc2l0
aW9uOwotICAgIH0gZWxzZSBpZiAoKnBvc2l0aW9uID09ICcrJykKLSAgICAgICAgKytwb3NpdGlv
bjsKLSAgICBpZiAocG9zaXRpb24gPT0gZW5kKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ocG9zaXRpb24gPCBlbmQpOwogCi0gICAg
Ly8gU3RlcCA3Ci0gICAgaWYgKCFpc0FTQ0lJRGlnaXQoKnBvc2l0aW9uKSkKKyAgICBpZiAocG9z
aXRpb24gPT0gZW5kIHx8ICFpc0FTQ0lJRGlnaXQoKnBvc2l0aW9uKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgLy8gU3RlcCA4Ci0gICAgU3RyaW5nQnVpbGRlciBjbGVhbkNoYXJhY3Rl
cnM7Ci0gICAgaWYgKCFpc1Bvc2l0aXZlKQotICAgICAgICBjbGVhbkNoYXJhY3RlcnMuYXBwZW5k
KCctJyk7Ci0gICAgd2hpbGUgKHBvc2l0aW9uIDwgZW5kKSB7Ci0gICAgICAgIGlmICghaXNBU0NJ
SURpZ2l0KCpwb3NpdGlvbikpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2xlYW5DaGFy
YWN0ZXJzLmFwcGVuZCgqcG9zaXRpb24rKyk7Ci0gICAgfQorICAgIHdoaWxlIChwb3NpdGlvbiA8
IGVuZCAmJiBpc0FTQ0lJRGlnaXQoKnBvc2l0aW9uKSkKKyAgICAgICAgKytwb3NpdGlvbjsKIAog
ICAgIC8vIFN0ZXAgOQogICAgIGJvb2wgb2s7Ci0gICAgaWYgKGNsZWFuQ2hhcmFjdGVycy5pczhC
aXQoKSkKLSAgICAgICAgdmFsdWUgPSBjaGFyYWN0ZXJzVG9JbnRTdHJpY3QoY2xlYW5DaGFyYWN0
ZXJzLmNoYXJhY3RlcnM4KCksIGNsZWFuQ2hhcmFjdGVycy5sZW5ndGgoKSwgJm9rKTsKLSAgICBl
bHNlCi0gICAgICAgIHZhbHVlID0gY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNsZWFuQ2hhcmFjdGVy
cy5jaGFyYWN0ZXJzMTYoKSwgY2xlYW5DaGFyYWN0ZXJzLmxlbmd0aCgpLCAmb2spOworICAgIHZh
bHVlID0gY2hhcmFjdGVyc1RvSW50U3RyaWN0KG51bWJlclN0YXJ0LCBwb3NpdGlvbiAtIG51bWJl
clN0YXJ0LCAmb2spOwogICAgIHJldHVybiBvazsKIH0KIAogLy8gaHR0cDovL3d3dy53aGF0d2cu
b3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jcnVsZXMtZm9yLXBhcnNpbmctaW50ZWdl
cnMKIGJvb2wgcGFyc2VIVE1MSW50ZWdlcihjb25zdCBTdHJpbmcmIGlucHV0LCBpbnQmIHZhbHVl
KQogewotICAgIC8vIFN0ZXAgMQotICAgIC8vIFN0ZXAgMgogICAgIHVuc2lnbmVkIGxlbmd0aCA9
IGlucHV0Lmxlbmd0aCgpOwotICAgIGlmICghbGVuZ3RoIHx8IGlucHV0LmlzOEJpdCgpKSB7Ci0g
ICAgICAgIGNvbnN0IExDaGFyKiBzdGFydCA9IGlucHV0LmNoYXJhY3RlcnM4KCk7CisgICAgaWYg
KCFsZW5ndGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChMSUtFTFkoaW5wdXQu
aXM4Qml0KCkpKSB7CisgICAgICAgIGF1dG8qIHN0YXJ0ID0gaW5wdXQuY2hhcmFjdGVyczgoKTsK
ICAgICAgICAgcmV0dXJuIHBhcnNlSFRNTEludGVnZXJJbnRlcm5hbChzdGFydCwgc3RhcnQgKyBs
ZW5ndGgsIHZhbHVlKTsKICAgICB9CiAKLSAgICBjb25zdCBVQ2hhciogc3RhcnQgPSBpbnB1dC5j
aGFyYWN0ZXJzMTYoKTsKKyAgICBhdXRvKiBzdGFydCA9IGlucHV0LmNoYXJhY3RlcnMxNigpOwog
ICAgIHJldHVybiBwYXJzZUhUTUxJbnRlZ2VySW50ZXJuYWwoc3RhcnQsIHN0YXJ0ICsgbGVuZ3Ro
LCB2YWx1ZSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272409</attachid>
            <date>2016-02-26 22:34:16 -0800</date>
            <delta_ts>2016-02-27 09:43:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154772-20160226223358.patch</filename>
            <type>text/plain</type>
            <size>4221</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3MjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGEzMTM5NzNkYmUyYTdl
ZGNhY2E3YzA3YWViOGYzODBlZjIwYWJkOC4uM2VlMzVjMWQwNDcwNTczOWViZGZhYTM3YmEyMzU5
YzNlYmIwZDdlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIzIEBACiAyMDE2LTAyLTI2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgT3B0aW1pemUgcGFyc2VIVE1M
SW50ZWdlcigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTQ3NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBPcHRpbWl6ZSBwYXJzZUhUTUxJbnRlZ2VyKCkgYSBiaXQgbm93IHRoYXQgaXQgaXMgdXNlZCBh
IGxvdCBtb3JlIGFuZAorICAgICAgICB0aGF0IGl0IGhhcyBkZWNlbnQgQVBJIHRlc3QgY292ZXJh
Z2UuIEluIHBhcnRpY3VsYXIsIHdlIG5vdzoKKyAgICAgICAgLSBBdm9pZCB1c2luZyBhIFN0cmlu
Z0J1aWxkZXIgZm9yIHRoZSBkaWdpdHMuCisgICAgICAgIC0gR2V0IHJpZCBvZiBhIGlzOEJpdCgp
IGJyYW5jaC4KKyAgICAgICAgLSBPbmx5IHRyYXZlcnNlIHRoZSBpbnB1dCBzdHJpbmcgb25jZS4K
KworICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VIVE1MSW50ZWdlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OnBh
cnNlSFRNTEludGVnZXIpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VIVE1MTm9uTmVnYXRpdmVJ
bnRlZ2VyKTogRGVsZXRlZC4KKworMjAxNi0wMi0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCiAgICAgICAgIEZpeCB0aGUgYmVoYXZpb3Igb2YgcmVmbGVjdGluZyBJREwgYXR0
cmlidXRlcyBvZiB0eXBlIHVuc2lnbmVkIGxvbmcKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDc3MQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCmluZGV4IDAzY2ExOTJhZjliYzllODcyZmFjN2Ez
MTI4ODc1MzQ4MjNlN2U4YTUuLmU3NjYxNmJiNGFkZjk3YzRjNzQwNGEwYzYxNDg5MzI5NTdmOGNh
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlv
bXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMu
Y3BwCkBAIC0xNTUsNjYgKzE1NSw1NCBAQCBkb3VibGUgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5
cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4KIHN0YXRpYyBib29sIHBhcnNlSFRNTEludGVnZXJJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJU
eXBlKiBwb3NpdGlvbiwgY29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kLCBpbnQmIHZhbHVlKQogewot
ICAgIC8vIFN0ZXAgMwotICAgIGJvb2wgaXNQb3NpdGl2ZSA9IHRydWU7Ci0KLSAgICAvLyBTdGVw
IDQKLSAgICB3aGlsZSAocG9zaXRpb24gPCBlbmQpIHsKLSAgICAgICAgaWYgKCFpc0hUTUxTcGFj
ZSgqcG9zaXRpb24pKQotICAgICAgICAgICAgYnJlYWs7CisgICAgd2hpbGUgKHBvc2l0aW9uIDwg
ZW5kICYmIGlzSFRNTFNwYWNlKCpwb3NpdGlvbikpCiAgICAgICAgICsrcG9zaXRpb247Ci0gICAg
fQogCi0gICAgLy8gU3RlcCA1CiAgICAgaWYgKHBvc2l0aW9uID09IGVuZCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHBvc2l0aW9u
IDwgZW5kKTsKIAotICAgIC8vIFN0ZXAgNgorICAgIGJvb2wgaXNOZWdhdGl2ZSA9IGZhbHNlOwog
ICAgIGlmICgqcG9zaXRpb24gPT0gJy0nKSB7Ci0gICAgICAgIGlzUG9zaXRpdmUgPSBmYWxzZTsK
KyAgICAgICAgaXNOZWdhdGl2ZSA9IHRydWU7CiAgICAgICAgICsrcG9zaXRpb247CiAgICAgfSBl
bHNlIGlmICgqcG9zaXRpb24gPT0gJysnKQogICAgICAgICArK3Bvc2l0aW9uOwotICAgIGlmIChw
b3NpdGlvbiA9PSBlbmQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTihwb3NpdGlvbiA8IGVuZCk7CiAKLSAgICAvLyBTdGVwIDcKLSAg
ICBpZiAoIWlzQVNDSUlEaWdpdCgqcG9zaXRpb24pKQorICAgIGlmIChwb3NpdGlvbiA9PSBlbmQg
fHwgIWlzQVNDSUlEaWdpdCgqcG9zaXRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICAvLyBTdGVwIDgKLSAgICBTdHJpbmdCdWlsZGVyIGNsZWFuQ2hhcmFjdGVyczsKLSAgICBpZiAo
IWlzUG9zaXRpdmUpCi0gICAgICAgIGNsZWFuQ2hhcmFjdGVycy5hcHBlbmQoJy0nKTsKLSAgICB3
aGlsZSAocG9zaXRpb24gPCBlbmQpIHsKLSAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoKnBvc2l0
aW9uKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjbGVhbkNoYXJhY3RlcnMuYXBwZW5k
KCpwb3NpdGlvbisrKTsKLSAgICB9CisgICAgY29uc3RleHByIGludCBpbnRNYXggPSBzdGQ6Om51
bWVyaWNfbGltaXRzPGludD46Om1heCgpOworICAgIGNvbnN0ZXhwciBpbnQgYmFzZSA9IDEwOwor
ICAgIGNvbnN0ZXhwciBpbnQgbWF4TXVsdGlwbGllciA9IGludE1heCAvIGJhc2U7CisKKyAgICBp
bnQgcmVzdWx0ID0gMDsKKyAgICBkbyB7CisgICAgICAgIGludCBkaWdpdFZhbHVlID0gKnBvc2l0
aW9uIC0gJzAnOwogCi0gICAgLy8gU3RlcCA5Ci0gICAgYm9vbCBvazsKLSAgICBpZiAoY2xlYW5D
aGFyYWN0ZXJzLmlzOEJpdCgpKQotICAgICAgICB2YWx1ZSA9IGNoYXJhY3RlcnNUb0ludFN0cmlj
dChjbGVhbkNoYXJhY3RlcnMuY2hhcmFjdGVyczgoKSwgY2xlYW5DaGFyYWN0ZXJzLmxlbmd0aCgp
LCAmb2spOwotICAgIGVsc2UKLSAgICAgICAgdmFsdWUgPSBjaGFyYWN0ZXJzVG9JbnRTdHJpY3Qo
Y2xlYW5DaGFyYWN0ZXJzLmNoYXJhY3RlcnMxNigpLCBjbGVhbkNoYXJhY3RlcnMubGVuZ3RoKCks
ICZvayk7Ci0gICAgcmV0dXJuIG9rOworICAgICAgICBpZiAocmVzdWx0ID4gbWF4TXVsdGlwbGll
ciB8fCAocmVzdWx0ID09IG1heE11bHRpcGxpZXIgJiYgZGlnaXRWYWx1ZSA+IChpbnRNYXggJSBi
YXNlKSArIGlzTmVnYXRpdmUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IHJlc3VsdCA9IGJhc2UgKiByZXN1bHQgKyBkaWdpdFZhbHVlOworICAgICAgICArK3Bvc2l0aW9u
OworICAgIH0gd2hpbGUgKHBvc2l0aW9uIDwgZW5kICYmIGlzQVNDSUlEaWdpdCgqcG9zaXRpb24p
KTsKKworICAgIHZhbHVlID0gaXNOZWdhdGl2ZSA/IC1yZXN1bHQgOiByZXN1bHQ7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdl
L2luZnJhc3RydWN0dXJlLmh0bWwjcnVsZXMtZm9yLXBhcnNpbmctaW50ZWdlcnMKIGJvb2wgcGFy
c2VIVE1MSW50ZWdlcihjb25zdCBTdHJpbmcmIGlucHV0LCBpbnQmIHZhbHVlKQogewotICAgIC8v
IFN0ZXAgMQotICAgIC8vIFN0ZXAgMgogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGlucHV0Lmxlbmd0
aCgpOwotICAgIGlmICghbGVuZ3RoIHx8IGlucHV0LmlzOEJpdCgpKSB7Ci0gICAgICAgIGNvbnN0
IExDaGFyKiBzdGFydCA9IGlucHV0LmNoYXJhY3RlcnM4KCk7CisgICAgaWYgKCFsZW5ndGgpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChMSUtFTFkoaW5wdXQuaXM4Qml0KCkpKSB7
CisgICAgICAgIGF1dG8qIHN0YXJ0ID0gaW5wdXQuY2hhcmFjdGVyczgoKTsKICAgICAgICAgcmV0
dXJuIHBhcnNlSFRNTEludGVnZXJJbnRlcm5hbChzdGFydCwgc3RhcnQgKyBsZW5ndGgsIHZhbHVl
KTsKICAgICB9CiAKLSAgICBjb25zdCBVQ2hhciogc3RhcnQgPSBpbnB1dC5jaGFyYWN0ZXJzMTYo
KTsKKyAgICBhdXRvKiBzdGFydCA9IGlucHV0LmNoYXJhY3RlcnMxNigpOwogICAgIHJldHVybiBw
YXJzZUhUTUxJbnRlZ2VySW50ZXJuYWwoc3RhcnQsIHN0YXJ0ICsgbGVuZ3RoLCB2YWx1ZSk7CiB9
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272418</attachid>
            <date>2016-02-27 09:43:13 -0800</date>
            <delta_ts>2016-02-27 10:30:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154772-20160227094256.patch</filename>
            <type>text/plain</type>
            <size>4224</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3MjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGEzMTM5NzNkYmUyYTdl
ZGNhY2E3YzA3YWViOGYzODBlZjIwYWJkOC4uN2E2Y2Y1YzNjZmI4NzI0ZGU2YmMyODVkMTU3MDZi
OGQxNTRhMDRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIzIEBACiAyMDE2LTAyLTI2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgT3B0aW1pemUgcGFyc2VIVE1M
SW50ZWdlcigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTQ3NzIKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAg
T3B0aW1pemUgcGFyc2VIVE1MSW50ZWdlcigpIGEgYml0IG5vdyB0aGF0IGl0IGlzIHVzZWQgYSBs
b3QgbW9yZSBhbmQKKyAgICAgICAgdGhhdCBpdCBoYXMgZGVjZW50IEFQSSB0ZXN0IGNvdmVyYWdl
LiBJbiBwYXJ0aWN1bGFyLCB3ZSBub3c6CisgICAgICAgIC0gQXZvaWQgdXNpbmcgYSBTdHJpbmdC
dWlsZGVyIGZvciB0aGUgZGlnaXRzLgorICAgICAgICAtIEdldCByaWQgb2YgYSBpczhCaXQoKSBi
cmFuY2guCisgICAgICAgIC0gT25seSB0cmF2ZXJzZSB0aGUgaW5wdXQgc3RyaW5nIG9uY2UuCisK
KyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBhcnNlSFRNTEludGVnZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpwYXJz
ZUhUTUxJbnRlZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50
ZWdlcik6IERlbGV0ZWQuCisKKzIwMTYtMDItMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKwogICAgICAgICBGaXggdGhlIGJlaGF2aW9yIG9mIHJlZmxlY3RpbmcgSURMIGF0dHJp
YnV0ZXMgb2YgdHlwZSB1bnNpZ25lZCBsb25nCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ3NzEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAppbmRleCAwM2NhMTkyYWY5YmM5ZTg3MmZhYzdhMzEy
ODg3NTM0ODIzZTdlOGE1Li5iNTk5NjE3MDdkZWU3YzNhMjk5NmY4NzUyZGEwYWFhM2VhNWI2YzZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21z
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNw
cApAQCAtMTU1LDY2ICsxNTUsNTQgQEAgZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBl
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
CiBzdGF0aWMgYm9vbCBwYXJzZUhUTUxJbnRlZ2VySW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlw
ZSogcG9zaXRpb24sIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCwgaW50JiB2YWx1ZSkKIHsKLSAg
ICAvLyBTdGVwIDMKLSAgICBib29sIGlzUG9zaXRpdmUgPSB0cnVlOwotCi0gICAgLy8gU3RlcCA0
Ci0gICAgd2hpbGUgKHBvc2l0aW9uIDwgZW5kKSB7Ci0gICAgICAgIGlmICghaXNIVE1MU3BhY2Uo
KnBvc2l0aW9uKSkKLSAgICAgICAgICAgIGJyZWFrOworICAgIHdoaWxlIChwb3NpdGlvbiA8IGVu
ZCAmJiBpc0hUTUxTcGFjZSgqcG9zaXRpb24pKQogICAgICAgICArK3Bvc2l0aW9uOwotICAgIH0K
IAotICAgIC8vIFN0ZXAgNQogICAgIGlmIChwb3NpdGlvbiA9PSBlbmQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihwb3NpdGlvbiA8
IGVuZCk7CiAKLSAgICAvLyBTdGVwIDYKKyAgICBib29sIGlzTmVnYXRpdmUgPSBmYWxzZTsKICAg
ICBpZiAoKnBvc2l0aW9uID09ICctJykgewotICAgICAgICBpc1Bvc2l0aXZlID0gZmFsc2U7Cisg
ICAgICAgIGlzTmVnYXRpdmUgPSB0cnVlOwogICAgICAgICArK3Bvc2l0aW9uOwogICAgIH0gZWxz
ZSBpZiAoKnBvc2l0aW9uID09ICcrJykKICAgICAgICAgKytwb3NpdGlvbjsKLSAgICBpZiAocG9z
aXRpb24gPT0gZW5kKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04ocG9zaXRpb24gPCBlbmQpOwogCi0gICAgLy8gU3RlcCA3Ci0gICAg
aWYgKCFpc0FTQ0lJRGlnaXQoKnBvc2l0aW9uKSkKKyAgICBpZiAocG9zaXRpb24gPT0gZW5kIHx8
ICFpc0FTQ0lJRGlnaXQoKnBvc2l0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Ly8gU3RlcCA4Ci0gICAgU3RyaW5nQnVpbGRlciBjbGVhbkNoYXJhY3RlcnM7Ci0gICAgaWYgKCFp
c1Bvc2l0aXZlKQotICAgICAgICBjbGVhbkNoYXJhY3RlcnMuYXBwZW5kKCctJyk7Ci0gICAgd2hp
bGUgKHBvc2l0aW9uIDwgZW5kKSB7Ci0gICAgICAgIGlmICghaXNBU0NJSURpZ2l0KCpwb3NpdGlv
bikpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2xlYW5DaGFyYWN0ZXJzLmFwcGVuZCgq
cG9zaXRpb24rKyk7Ci0gICAgfQorICAgIGNvbnN0ZXhwciBpbnQgaW50TWF4ID0gc3RkOjpudW1l
cmljX2xpbWl0czxpbnQ+OjptYXgoKTsKKyAgICBjb25zdGV4cHIgaW50IGJhc2UgPSAxMDsKKyAg
ICBjb25zdGV4cHIgaW50IG1heE11bHRpcGxpZXIgPSBpbnRNYXggLyBiYXNlOworCisgICAgdW5z
aWduZWQgcmVzdWx0ID0gMDsKKyAgICBkbyB7CisgICAgICAgIGludCBkaWdpdFZhbHVlID0gKnBv
c2l0aW9uIC0gJzAnOwogCi0gICAgLy8gU3RlcCA5Ci0gICAgYm9vbCBvazsKLSAgICBpZiAoY2xl
YW5DaGFyYWN0ZXJzLmlzOEJpdCgpKQotICAgICAgICB2YWx1ZSA9IGNoYXJhY3RlcnNUb0ludFN0
cmljdChjbGVhbkNoYXJhY3RlcnMuY2hhcmFjdGVyczgoKSwgY2xlYW5DaGFyYWN0ZXJzLmxlbmd0
aCgpLCAmb2spOwotICAgIGVsc2UKLSAgICAgICAgdmFsdWUgPSBjaGFyYWN0ZXJzVG9JbnRTdHJp
Y3QoY2xlYW5DaGFyYWN0ZXJzLmNoYXJhY3RlcnMxNigpLCBjbGVhbkNoYXJhY3RlcnMubGVuZ3Ro
KCksICZvayk7Ci0gICAgcmV0dXJuIG9rOworICAgICAgICBpZiAocmVzdWx0ID4gbWF4TXVsdGlw
bGllciB8fCAocmVzdWx0ID09IG1heE11bHRpcGxpZXIgJiYgZGlnaXRWYWx1ZSA+IChpbnRNYXgg
JSBiYXNlKSArIGlzTmVnYXRpdmUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgIHJlc3VsdCA9IGJhc2UgKiByZXN1bHQgKyBkaWdpdFZhbHVlOworICAgICAgICArK3Bvc2l0
aW9uOworICAgIH0gd2hpbGUgKHBvc2l0aW9uIDwgZW5kICYmIGlzQVNDSUlEaWdpdCgqcG9zaXRp
b24pKTsKKworICAgIHZhbHVlID0gaXNOZWdhdGl2ZSA/IC1yZXN1bHQgOiByZXN1bHQ7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlw
YWdlL2luZnJhc3RydWN0dXJlLmh0bWwjcnVsZXMtZm9yLXBhcnNpbmctaW50ZWdlcnMKIGJvb2wg
cGFyc2VIVE1MSW50ZWdlcihjb25zdCBTdHJpbmcmIGlucHV0LCBpbnQmIHZhbHVlKQogewotICAg
IC8vIFN0ZXAgMQotICAgIC8vIFN0ZXAgMgogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGlucHV0Lmxl
bmd0aCgpOwotICAgIGlmICghbGVuZ3RoIHx8IGlucHV0LmlzOEJpdCgpKSB7Ci0gICAgICAgIGNv
bnN0IExDaGFyKiBzdGFydCA9IGlucHV0LmNoYXJhY3RlcnM4KCk7CisgICAgaWYgKCFsZW5ndGgp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChMSUtFTFkoaW5wdXQuaXM4Qml0KCkp
KSB7CisgICAgICAgIGF1dG8qIHN0YXJ0ID0gaW5wdXQuY2hhcmFjdGVyczgoKTsKICAgICAgICAg
cmV0dXJuIHBhcnNlSFRNTEludGVnZXJJbnRlcm5hbChzdGFydCwgc3RhcnQgKyBsZW5ndGgsIHZh
bHVlKTsKICAgICB9CiAKLSAgICBjb25zdCBVQ2hhciogc3RhcnQgPSBpbnB1dC5jaGFyYWN0ZXJz
MTYoKTsKKyAgICBhdXRvKiBzdGFydCA9IGlucHV0LmNoYXJhY3RlcnMxNigpOwogICAgIHJldHVy
biBwYXJzZUhUTUxJbnRlZ2VySW50ZXJuYWwoc3RhcnQsIHN0YXJ0ICsgbGVuZ3RoLCB2YWx1ZSk7
CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>