<?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>112952</bug_id>
          
          <creation_ts>2013-03-21 12:41:21 -0700</creation_ts>
          <short_desc>JSC: Fix lexer charPosition computation when “rewind&quot;ing the lexer</short_desc>
          <delta_ts>2013-03-21 13:09:02 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>860582</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-03-21 12:41:21 -0700</bug_when>
    <thetext>Currently, the lexer keeps a m_charPosition field which is supposed to track the m_code pointer.   m_charPosition used to be m_column which cannot be computed directly from the m_code pointer.  Now that we’re computing the char position instead of the column, we can get rid of m_charPosition and just compute it as m_code - m_codeStartPlusOffset, where m_codeStartPlusOffset is m_codeStart + the SourceCode offset.

This fixes a bug where m_charPosition gets out of sync with m_code when we “rewind” the lexer by setting m_code back to an earlier position in the source string.

ref: &lt;rdar://problem/13467032&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860588</commentid>
    <comment_count>1</comment_count>
      <attachid>194322</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-03-21 12:50:41 -0700</bug_when>
    <thetext>Created attachment 194322
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860602</commentid>
    <comment_count>2</comment_count>
      <attachid>194322</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-03-21 13:04:42 -0700</bug_when>
    <thetext>Comment on attachment 194322
the patch

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860608</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-03-21 13:09:02 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r146505: &lt;http://trac.webkit.org/changeset/146505&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194322</attachid>
            <date>2013-03-21 12:50:41 -0700</date>
            <delta_ts>2013-03-21 13:04:42 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>bug-112952.patch</filename>
            <type>text/plain</type>
            <size>4381</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ2NDk4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBA
CisyMDEzLTAzLTIxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aXggbGV4ZXIgY2hhclBvc2l0aW9uIGNvbXB1dGF0aW9uIHdoZW4gInJld2luZCJpbmcgdGhlIGxl
eGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEy
OTUyLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENo
YW5nZWQgdGhlIExleGVyIHRvIG5vIGxvbmdlciBrZWVwIGEgbV9jaGFyUG9zaXRpb24uIEluc3Rl
YWQsIHdlIGNvbXB1dGUKKyAgICAgICAgY3VycmVudENoYXJQb3NpdGlvbigpIGZyb20gbV9jb2Rl
IGFuZCBtX2NvZGVTdGFydFBsdXNPZmZzZXQsIHdoZXJlCisgICAgICAgIG1fY29kZVN0YXJ0UGx1
c09mZnNldCBpcyB0aGUgU291cmNlUHJvdmlkZXIgbV9jb2RlU3RhcnQgKyB0aGUgU291cmNlQ29k
ZQorICAgICAgICBzdGFydCBvZmZzZXQuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBjaGFyUG9zaXRp
b24gaXMgYWx3YXlzIGluIHN5bmMgd2l0aAorICAgICAgICBtX2NvZGUuCisKKyAgICAgICAgKiBw
YXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjo6OnNldENvZGUpOgorICAgICAgICAoSlND
Ojo6OmludGVybmFsU2hpZnQpOgorICAgICAgICAoSlNDOjo6OnNoaWZ0KToKKyAgICAgICAgKEpT
Qzo6OjpsZXgpOgorICAgICAgICAqIHBhcnNlci9MZXhlci5oOgorICAgICAgICAoSlNDOjpMZXhl
cjo6Y3VycmVudENoYXJQb3NpdGlvbik6CisgICAgICAgIChKU0M6Ojo6bGV4RXhwZWN0SWRlbnRp
Zmllcik6CisKIDIwMTMtMDMtMjEgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxl
LmNvbT4KIAogICAgICAgICBPYmplY3RpdmUtQyBBUEk6IHdyYXBwZXJDbGFzcyBob2xkcyBhIHN0
YXRpYyBKU0NsYXNzUmVmLCB3aGljaCBjYXVzZXMgSlNHbG9iYWxPYmplY3RzIHRvIGxlYWsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCShyZXZpc2lvbiAxNDYzNjIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTQ2LDExICs1NDYsMTEgQEAgdm9pZCBMZXhlcjxUPjo6c2V0Q29kZShjb25zdCBTb3Vy
Y2VDb2RlJgogICAgICAgICBtX2NvZGVTdGFydCA9IDA7CiAKICAgICBtX3NvdXJjZSA9ICZzb3Vy
Y2U7Ci0gICAgbV9jb2RlID0gbV9jb2RlU3RhcnQgKyBzb3VyY2Uuc3RhcnRPZmZzZXQoKTsKKyAg
ICBtX2NvZGVTdGFydFBsdXNPZmZzZXQgPSBtX2NvZGVTdGFydCArIHNvdXJjZS5zdGFydE9mZnNl
dCgpOworICAgIG1fY29kZSA9IG1fY29kZVN0YXJ0UGx1c09mZnNldDsKICAgICBtX2NvZGVFbmQg
PSBtX2NvZGVTdGFydCArIHNvdXJjZS5lbmRPZmZzZXQoKTsKICAgICBtX2Vycm9yID0gZmFsc2U7
CiAgICAgbV9hdExpbmVTdGFydCA9IHRydWU7Ci0gICAgbV9jaGFyUG9zaXRpb24gPSAwOwogICAg
IG1fbGV4RXJyb3JNZXNzYWdlID0gU3RyaW5nKCk7CiAgICAgCiAgICAgbV9idWZmZXI4LnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoaW5pdGlhbFJlYWRCdWZmZXJDYXBhY2l0eSk7CkBAIC01NjcsNyAr
NTY3LDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiB0ZW1wbGF0ZSA8aW50IHNoaWZ0QW1vdW50
PiBBTFdBWVNfSU5MSU5FIHZvaWQgTGV4ZXI8VD46OmludGVybmFsU2hpZnQoKQogewogICAgIG1f
Y29kZSArPSBzaGlmdEFtb3VudDsKLSAgICBtX2NoYXJQb3NpdGlvbiArPSBzaGlmdEFtb3VudDsK
ICAgICBtX2N1cnJlbnQgPSAqbV9jb2RlOwogfQogCkBAIC01NzksNyArNTc4LDYgQEAgQUxXQVlT
X0lOTElORSB2b2lkIExleGVyPFQ+OjpzaGlmdCgpCiAgICAgKyttX2NvZGU7CiAgICAgaWYgKExJ
S0VMWShtX2NvZGUgPCBtX2NvZGVFbmQpKQogICAgICAgICBtX2N1cnJlbnQgPSAqbV9jb2RlOwot
ICAgICsrbV9jaGFyUG9zaXRpb247CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpAQCAtMTMx
OSw3ICsxMzE3LDcgQEAgc3RhcnQ6CiAgICAgICAgIHJldHVybiBFT0ZUT0s7CiAgICAgCiAgICAg
dG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQgPSBjdXJyZW50T2Zmc2V0KCk7Ci0gICAgdG9rZW5M
b2NhdGlvbi0+Y2hhclBvc2l0aW9uID0gbV9jaGFyUG9zaXRpb247CisgICAgdG9rZW5Mb2NhdGlv
bi0+Y2hhclBvc2l0aW9uID0gY3VycmVudENoYXJQb3NpdGlvbigpOwogCiAgICAgQ2hhcmFjdGVy
VHlwZSB0eXBlOwogICAgIGlmIChMSUtFTFkoaXNMYXRpbjEobV9jdXJyZW50KSkpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCShyZXZpc2lvbiAxNDYzNjIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTkwLDcg
KzkwLDcgQEAgcHVibGljOgogICAgIEpTVG9rZW5UeXBlIGxleChKU1Rva2VuRGF0YSosIEpTVG9r
ZW5Mb2NhdGlvbiosIHVuc2lnbmVkLCBib29sIHN0cmljdE1vZGUpOwogICAgIGJvb2wgbmV4dFRv
a2VuSXNDb2xvbigpOwogICAgIGludCBsaW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9saW5l
TnVtYmVyOyB9Ci0gICAgaW50IGN1cnJlbnRDaGFyUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2NoYXJQb3NpdGlvbjsgfQorICAgIGludCBjdXJyZW50Q2hhclBvc2l0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2RlIC0gbV9jb2RlU3RhcnRQbHVzT2Zmc2V0OyB9CiAgICAgdm9pZCBzZXRMYXN0
TGluZU51bWJlcihpbnQgbGFzdExpbmVOdW1iZXIpIHsgbV9sYXN0TGluZU51bWJlciA9IGxhc3RM
aW5lTnVtYmVyOyB9CiAgICAgaW50IGxhc3RMaW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9s
YXN0TGluZU51bWJlcjsgfQogICAgIGJvb2wgcHJldlRlcm1pbmF0b3IoKSBjb25zdCB7IHJldHVy
biBtX3Rlcm1pbmF0b3I7IH0KQEAgLTE3MCw3ICsxNzAsNiBAQCBwcml2YXRlOgogCiAgICAgaW50
IG1fbGluZU51bWJlcjsKICAgICBpbnQgbV9sYXN0TGluZU51bWJlcjsKLSAgICBpbnQgbV9jaGFy
UG9zaXRpb247CiAKICAgICBWZWN0b3I8TENoYXI+IG1fYnVmZmVyODsKICAgICBWZWN0b3I8VUNo
YXI+IG1fYnVmZmVyMTY7CkBAIC0xODEsNiArMTgwLDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBU
KiBtX2NvZGU7CiAgICAgY29uc3QgVCogbV9jb2RlU3RhcnQ7CiAgICAgY29uc3QgVCogbV9jb2Rl
RW5kOworICAgIGNvbnN0IFQqIG1fY29kZVN0YXJ0UGx1c09mZnNldDsKICAgICBib29sIG1faXNS
ZXBhcnNpbmc7CiAgICAgYm9vbCBtX2F0TGluZVN0YXJ0OwogICAgIGJvb2wgbV9lcnJvcjsKQEAg
LTMxNyw3ICszMTcsNiBAQCBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhF
CiAgICAgICAgIG1fY3VycmVudCA9IDA7CiAKICAgICBtX2NvZGUgPSBwdHI7Ci0gICAgbV9jaGFy
UG9zaXRpb24gPSBtX2NoYXJQb3NpdGlvbiArIChtX2NvZGUgLSBzdGFydCk7CiAKICAgICAvLyBD
cmVhdGUgdGhlIGlkZW50aWZpZXIgaWYgbmVlZGVkCiAgICAgaWYgKGxleGVyRmxhZ3MgJiBMZXhl
eEZsYWdzRG9udEJ1aWxkS2V5d29yZHMpCkBAIC0zMjcsNyArMzI2LDcgQEAgQUxXQVlTX0lOTElO
RSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4RQogICAgIHRva2VuTG9jYXRpb24tPmxpbmUgPSBt
X2xpbmVOdW1iZXI7CiAgICAgdG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQgPSBzdGFydCAtIG1f
Y29kZVN0YXJ0OwogICAgIHRva2VuTG9jYXRpb24tPmVuZE9mZnNldCA9IGN1cnJlbnRPZmZzZXQo
KTsKLSAgICB0b2tlbkxvY2F0aW9uLT5jaGFyUG9zaXRpb24gPSBtX2NoYXJQb3NpdGlvbjsKKyAg
ICB0b2tlbkxvY2F0aW9uLT5jaGFyUG9zaXRpb24gPSBjdXJyZW50Q2hhclBvc2l0aW9uKCk7CiAg
ICAgbV9sYXN0VG9rZW4gPSBJREVOVDsKICAgICByZXR1cm4gSURFTlQ7CiAgICAgCg==
</data>
<flag name="review"
          id="216068"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>