<?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>52036</bug_id>
          
          <creation_ts>2011-01-06 17:20:20 -0800</creation_ts>
          <short_desc>Feed libxml2 with raw data, relying on it to do character set decoding</short_desc>
          <delta_ts>2011-01-30 09:13:05 -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>XML</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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>
          <dependson>52547</dependson>
    
    <dependson>52085</dependson>
    
    <dependson>53398</dependson>
          <blocked>43085</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrick R. Gansterer">paroga</reporter>
          <assigned_to name="Patrick R. Gansterer">paroga</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>330566</commentid>
    <comment_count>0</comment_count>
      <attachid>78193</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-01-06 17:20:20 -0800</bug_when>
    <thetext>Created attachment 78193
Work in progress

I created a patch of the work I&apos;ve done already. Maybe you can give me some early feedback.
At the moment only about 5 test fail, because of some missing encoding problem. (I don&apos;t teach libxml2 about all known TextEncodings in the current state).

XMLDocumentParser is a subclass of ScriptableDocumentParser which is a subclass of DecodedDataDocumentParser.
Normally DecodedDataDocumentParser handles the appendBytes method, which I&apos;ve implemented in the XMLDocumentParser to get the raw data.
IMHO this is a kind of &quot;layer violation&quot;. Can you give me a tip how to implement this in a correct way? Do I need to change the inheritance of all &quot;parser classes&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335108</commentid>
    <comment_count>1</comment_count>
      <attachid>79118</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-01-16 17:01:15 -0800</bug_when>
    <thetext>Created attachment 79118
Work in progress

I did some small performance tests (see bug 52547) with this new patch:

                  avg      median  stdev  min   max
HTML              6517.25  6770.5  505    5242  7286
XML (original)    6254.5   6366    573    5462  7118
XML (with patch)  5735.45  5385.5  704    4159  6853
                  -8.3%    -15.4%</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78193</attachid>
            <date>2011-01-06 17:20:20 -0800</date>
            <delta_ts>2011-01-16 17:01:15 -0800</delta_ts>
            <desc>Work in progress</desc>
            <filename>test.patch</filename>
            <type>text/plain</type>
            <size>7121</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1dlYkNvcmUv
ZG9tL1hNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCAyN2IwZmQ0Li4xY2RmZGRiIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9kb20v
WE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0xMjIsMzAgKzEyMiw0NiBAQCB2b2lkIFhNTERvY3Vt
ZW50UGFyc2VyOjppbnNlcnQoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCiAgICAgLy8g
cmVzcG9uc2VYTUwoKSBjYWxscyBEb2N1bWVudDo6d3JpdGUoKSB3aGljaCBpbiB0dXJuIGNhbGxz
IGluc2VydCgpLiBJbgogICAgIC8vIEhUTUwsIHRoYXQncyBjb3JyZWN0LCBhcyBpbnNlcnQoKSBp
bXBsaWVzIGEgc3luY2hyb25vdXMgcGFyc2UuICBGb3IgWE1MLAogICAgIC8vIGFsbCBwYXJzaW5n
IGlzIHN5bmNocm9ub3VzIGJ1dCBkb2N1bWVudC53cml0ZSBzaG91bGRuJ3QgYmUgc3VwcG9ydGVk
LgotICAgIGFwcGVuZChzb3VyY2UpOworICAgIENTdHJpbmcgdGVtcFN0cmluZyA9IHNvdXJjZS50
b1N0cmluZygpLnV0ZjgoKTsKKyAgICBhcHBlbmQodGVtcFN0cmluZy5kYXRhKCksIHRlbXBTdHJp
bmcubGVuZ3RoKCkpOwogfQogCi12b2lkIFhNTERvY3VtZW50UGFyc2VyOjphcHBlbmQoY29uc3Qg
U2VnbWVudGVkU3RyaW5nJiBzKQordm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5kKGNvbnN0
IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0gICAgU3RyaW5nIHBhcnNlU3RyaW5nID0gcy50
b1N0cmluZygpOwotCiAgICAgaWYgKG1fc2F3WFNMVHJhbnNmb3JtIHx8ICFtX3Nhd0ZpcnN0RWxl
bWVudCkKLSAgICAgICAgbV9vcmlnaW5hbFNvdXJjZUZvclRyYW5zZm9ybSArPSBwYXJzZVN0cmlu
ZzsKKyAgICAgICAgbV9vcmlnaW5hbFNvdXJjZUZvclRyYW5zZm9ybS5hcHBlbmQoZGF0YSwgbGVu
Z3RoKTsKIAogICAgIGlmIChpc1N0b3BwZWQoKSB8fCBtX3Nhd1hTTFRyYW5zZm9ybSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKG1fcGFyc2VyUGF1c2VkKSB7Ci0gICAgICAgIG1fcGVuZGlu
Z1NyYy5hcHBlbmQocyk7CisgICAgICAgIG1fcGVuZGluZ1NyYy5hcHBlbmQoZGF0YSwgbGVuZ3Ro
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRvV3JpdGUocy50b1N0cmluZygpKTsK
KyAgICBkb1dyaXRlKGRhdGEsIGxlbmd0aCk7CiAKICAgICAvLyBBZnRlciBwYXJzaW5nLCBnbyBh
aGVhZCBhbmQgZGlzcGF0Y2ggaW1hZ2UgYmVmb3JlbG9hZCBldmVudHMuCiAgICAgSW1hZ2VMb2Fk
ZXI6OmRpc3BhdGNoUGVuZGluZ0JlZm9yZUxvYWRFdmVudHMoKTsKIH0KIAordm9pZCBYTUxEb2N1
bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXIqIHdyaXRlciAsIGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGgsIGJvb2wgc2hvdWxkRmx1c2gpCit7CisgICAgaWYgKCFsZW5n
dGggJiYgIXNob3VsZEZsdXNoKQorICAgICAgICByZXR1cm47CisKKyAgICBUZXh0UmVzb3VyY2VE
ZWNvZGVyKiBkZWNvZGVyID0gd3JpdGVyLT5jcmVhdGVEZWNvZGVySWZOZWVkZWQoKTsKKyAgICBT
dHJpbmcgZGVjb2RlZCA9IGRlY29kZXItPmRlY29kZShkYXRhLCBsZW5ndGgpOworICAgIGlmIChz
aG91bGRGbHVzaCkKKyAgICAgICAgZGVjb2RlZCArPSBkZWNvZGVyLT5mbHVzaCgpOworICAgIGlm
IChkZWNvZGVkLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgd3JpdGVyLT5yZXBv
cnREYXRhUmVjZWl2ZWQoKTsKKyAgICAKKyAgICBhcHBlbmQoZGF0YSwgbGVuZ3RoKTsKK30KKwog
dm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6aGFuZGxlRXJyb3IoRXJyb3JUeXBlIHR5cGUsIGNvbnN0
IGNoYXIqIG0sIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQogewogICAgIGlmICh0
eXBlID09IGZhdGFsIHx8IChtX2Vycm9yQ291bnQgPCBtYXhFcnJvcnMgJiYgbV9sYXN0RXJyb3JM
aW5lICE9IGxpbmVOdW1iZXIgJiYgbV9sYXN0RXJyb3JDb2x1bW4gIT0gY29sdW1uTnVtYmVyKSkg
ewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuaCBiL1dlYkNvcmUv
ZG9tL1hNTERvY3VtZW50UGFyc2VyLmgKaW5kZXggMTEzNzBmYS4uYzczMTc5MyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuaAorKysgYi9XZWJDb3JlL2RvbS9YTUxE
b2N1bWVudFBhcnNlci5oCkBAIC05Nyw2ICs5Nyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgYm9vbCBpc1dNTERvY3VtZW50KCkgY29uc3Q7CiAjZW5kaWYKIAorICAgICAgICB2b2lk
IGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKKyAgICAgICAgdm9pZCBhcHBl
bmRCeXRlcyhEb2N1bWVudFdyaXRlciogd3JpdGVyICwgY29uc3QgY2hhciogZGF0YSwgaW50IGxl
bmd0aCwgYm9vbCBzaG91bGRGbHVzaCk7CisKICAgICAgICAgc3RhdGljIGJvb2wgcGFyc2VEb2N1
bWVudEZyYWdtZW50KGNvbnN0IFN0cmluZyYsIERvY3VtZW50RnJhZ21lbnQqLCBFbGVtZW50KiBw
YXJlbnQgPSAwLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gPSBGcmFnbWVudFNjcmlwdGlu
Z0FsbG93ZWQpOwogCiAgICAgICAgIC8vIFdNTEVycm9ySGFuZGxpbmcgdXNlcyB0aGVzZSBmdW5j
dGlvbnMuCkBAIC0xNzcsMTIgKzE4MCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQgZW50ZXJU
ZXh0KCk7CiAgICAgICAgIHZvaWQgZXhpdFRleHQoKTsKIAotICAgICAgICB2b2lkIGRvV3JpdGUo
Y29uc3QgU3RyaW5nJik7CisgICAgICAgIHZvaWQgZG9Xcml0ZShjb25zdCBjaGFyKiwgaW50KTsK
ICAgICAgICAgdm9pZCBkb0VuZCgpOwogCiAgICAgICAgIEZyYW1lVmlldyogbV92aWV3OwogCi0g
ICAgICAgIFN0cmluZyBtX29yaWdpbmFsU291cmNlRm9yVHJhbnNmb3JtOworICAgICAgICBWZWN0
b3I8Y2hhcj4gbV9vcmlnaW5hbFNvdXJjZUZvclRyYW5zZm9ybTsKIAogI2lmIFVTRShRWE1MU1RS
RUFNKQogICAgICAgICBRWG1sU3RyZWFtUmVhZGVyIG1fc3RyZWFtOwpAQCAtMjIzLDExICsyMjYs
MTIgQEAgcHVibGljOgogCiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIEF0
b21pY1N0cmluZz4gUHJlZml4Rm9yTmFtZXNwYWNlTWFwOwogICAgICAgICBQcmVmaXhGb3JOYW1l
c3BhY2VNYXAgbV9wcmVmaXhUb05hbWVzcGFjZU1hcDsKLSAgICAgICAgU2VnbWVudGVkU3RyaW5n
IG1fcGVuZGluZ1NyYzsKKyAgICAgICAgVmVjdG9yPGNoYXI+IG1fcGVuZGluZ1NyYzsKICAgICAg
ICAgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIG1fc2NyaXB0aW5nUGVybWlzc2lvbjsKICAg
ICB9OwogCiAjaWYgRU5BQkxFKFhTTFQpCit2b2lkKiB4bWxEb2NQdHJGb3JWZWN0b3IoQ2FjaGVk
UmVzb3VyY2VMb2FkZXIqLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNvdXJjZSwgY29uc3QgU3RyaW5n
JiB1cmwpOwogdm9pZCogeG1sRG9jUHRyRm9yU3RyaW5nKENhY2hlZFJlc291cmNlTG9hZGVyKiwg
Y29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsKTsKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvV2ViQ29y
ZS9kb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCAyM2Y5ODgzLi42NjliZDZh
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisr
KyBiL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTM3MCw5ICsz
NzAsMTEgQEAgc3RhdGljIHZvaWQgc3dpdGNoVG9VVEYxNih4bWxQYXJzZXJDdHh0UHRyIGN0eHQp
CiAgICAgLy8gcmVzZXR0aW5nIHRoZSBlbmNvZGluZyB0byBVVEYtMTYgYmVmb3JlIGV2ZXJ5IGNo
dW5rLiAgT3RoZXJ3aXNlIGxpYnhtbAogICAgIC8vIHdpbGwgZGV0ZWN0IDw/eG1sIHZlcnNpb249
IjEuMCIgZW5jb2Rpbmc9IjxlbmNvZGluZyBuYW1lPiI/PiBibG9ja3MKICAgICAvLyBhbmQgc3dp
dGNoIGVuY29kaW5ncywgY2F1c2luZyB0aGUgcGFyc2UgdG8gZmFpbC4KKyNpZiAwCiAgICAgY29u
c3QgVUNoYXIgQk9NID0gMHhGRUZGOwogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgQk9NSGlnaEJ5
dGUgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oJkJPTSk7CiAgICAg
eG1sU3dpdGNoRW5jb2RpbmcoY3R4dCwgQk9NSGlnaEJ5dGUgPT0gMHhGRiA/IFhNTF9DSEFSX0VO
Q09ESU5HX1VURjE2TEUgOiBYTUxfQ0hBUl9FTkNPRElOR19VVEYxNkJFKTsKKyNlbmRpZgogfQog
CiBzdGF0aWMgYm9vbCBzaG91bGRBbGxvd0V4dGVybmFsTG9hZChjb25zdCBLVVJMJiB1cmwpCkBA
IC02NDIsNyArNjQ0LDcgQEAgWE1MRG9jdW1lbnRQYXJzZXI6On5YTUxEb2N1bWVudFBhcnNlcigp
CiAgICAgICAgIG1fcGVuZGluZ1NjcmlwdC0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogfQogCi12b2lk
IFhNTERvY3VtZW50UGFyc2VyOjpkb1dyaXRlKGNvbnN0IFN0cmluZyYgcGFyc2VTdHJpbmcpCit2
b2lkIFhNTERvY3VtZW50UGFyc2VyOjpkb1dyaXRlKGNvbnN0IGNoYXIqIGNodW5rLCBpbnQgbGVu
Z3RoKQogewogICAgIEFTU0VSVCghaXNEZXRhY2hlZCgpKTsKICAgICBpZiAoIW1fY29udGV4dCkK
QEAgLTY1MiwxNCArNjU0LDE0IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmRvV3JpdGUoY29u
c3QgU3RyaW5nJiBwYXJzZVN0cmluZykKICAgICBSZWZQdHI8WE1MUGFyc2VyQ29udGV4dD4gY29u
dGV4dCA9IG1fY29udGV4dDsKIAogICAgIC8vIGxpYlhNTCB0aHJvd3MgYW4gZXJyb3IgaWYgeW91
IHRyeSB0byBzd2l0Y2ggdGhlIGVuY29kaW5nIGZvciBhbiBlbXB0eSBzdHJpbmcuCi0gICAgaWYg
KHBhcnNlU3RyaW5nLmxlbmd0aCgpKSB7CisgICAgaWYgKGxlbmd0aCkgewogICAgICAgICAvLyBK
YXZhU2NyaXB0IG1heSBjYXVzZSB0aGUgcGFyc2VyIHRvIGRldGFjaCBkdXJpbmcgeG1sUGFyc2VD
aHVuawogICAgICAgICAvLyBrZWVwIHRoaXMgYWxpdmUgdW50aWwgdGhpcyBmdW5jdGlvbiBpcyBk
b25lLgogICAgICAgICBSZWZQdHI8WE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QodGhpcyk7CiAK
ICAgICAgICAgc3dpdGNoVG9VVEYxNihjb250ZXh0LT5jb250ZXh0KCkpOwogICAgICAgICBYTUxE
b2N1bWVudFBhcnNlclNjb3BlIHNjb3BlKGRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVy
KCkpOwotICAgICAgICB4bWxQYXJzZUNodW5rKGNvbnRleHQtPmNvbnRleHQoKSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4ocGFyc2VTdHJpbmcuY2hhcmFjdGVycygpKSwgc2l6ZW9mKFVD
aGFyKSAqIHBhcnNlU3RyaW5nLmxlbmd0aCgpLCAwKTsKKyAgICAgICAgeG1sUGFyc2VDaHVuayhj
b250ZXh0LT5jb250ZXh0KCksIGNodW5rLCBsZW5ndGgsIDApOwogCiAgICAgICAgIC8vIEphdmFT
Y3JpcHQgKHdoaWNoIG1heSBiZSBydW4gdW5kZXIgdGhlIHhtbFBhcnNlQ2h1bmsgY2FsbHN0YWNr
KSBtYXkKICAgICAgICAgLy8gY2F1c2UgdGhlIHBhcnNlciB0byBiZSBzdG9wcGVkIG9yIGRldGFj
aGVkLgpAQCAtMTMyNiw3ICsxMzI4LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6ZG9FbmQo
KQogewogI2lmIEVOQUJMRShYU0xUKQogICAgIGlmIChtX3Nhd1hTTFRyYW5zZm9ybSkgewotICAg
ICAgICB2b2lkKiBkb2MgPSB4bWxEb2NQdHJGb3JTdHJpbmcoZG9jdW1lbnQoKS0+Y2FjaGVkUmVz
b3VyY2VMb2FkZXIoKSwgbV9vcmlnaW5hbFNvdXJjZUZvclRyYW5zZm9ybSwgZG9jdW1lbnQoKS0+
dXJsKCkuc3RyaW5nKCkpOworICAgICAgICB2b2lkKiBkb2MgPSB4bWxEb2NQdHJGb3JWZWN0b3Io
ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKSwgbV9vcmlnaW5hbFNvdXJjZUZvclRy
YW5zZm9ybSwgZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkpOwogICAgICAgICBkb2N1bWVudCgp
LT5zZXRUcmFuc2Zvcm1Tb3VyY2UobmV3IFRyYW5zZm9ybVNvdXJjZShkb2MpKTsKIAogICAgICAg
ICBkb2N1bWVudCgpLT5zZXRQYXJzaW5nKGZhbHNlKTsgLy8gTWFrZSB0aGUgZG9jIHRoaW5rIGl0
J3MgZG9uZSwgc28gaXQgd2lsbCBhcHBseSB4c2wgc2hlZXRzLgpAQCAtMTM1MSw2ICsxMzUzLDE1
IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmRvRW5kKCkKIH0KIAogI2lmIEVOQUJMRShYU0xU
KQordm9pZCogeG1sRG9jUHRyRm9yVmVjdG9yKENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRS
ZXNvdXJjZUxvYWRlciwgY29uc3QgVmVjdG9yPGNoYXI+JiBzb3VyY2UsIGNvbnN0IFN0cmluZyYg
dXJsKQoreworICAgIGlmIChzb3VyY2UuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIFhNTERvY3VtZW50UGFyc2VyU2NvcGUgc2NvcGUoY2FjaGVkUmVzb3VyY2VMb2FkZXIsIGVy
cm9yRnVuYywgMCk7CisgICAgcmV0dXJuIHhtbFJlYWRNZW1vcnkoc291cmNlLmRhdGEoKSwgc291
cmNlLnNpemUoKSwgdXJsLmxhdGluMSgpLmRhdGEoKSwgMCwgWFNMVF9QQVJTRV9PUFRJT05TKTsK
K30KKwogdm9pZCogeG1sRG9jUHRyRm9yU3RyaW5nKENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNo
ZWRSZXNvdXJjZUxvYWRlciwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJs
KQogewogICAgIGlmIChzb3VyY2UuaXNFbXB0eSgpKQpAQCAtMTQzMSw5ICsxNDQyLDkgQEAgdm9p
ZCBYTUxEb2N1bWVudFBhcnNlcjo6cmVzdW1lUGFyc2luZygpCiAgICAgfQogCiAgICAgLy8gVGhl
biwgd3JpdGUgYW55IHBlbmRpbmcgZGF0YQotICAgIFNlZ21lbnRlZFN0cmluZyByZXN0ID0gbV9w
ZW5kaW5nU3JjOwotICAgIG1fcGVuZGluZ1NyYy5jbGVhcigpOwotICAgIGFwcGVuZChyZXN0KTsK
KyAgICBWZWN0b3I8Y2hhcj4gcmVzdDsKKyAgICBtX3BlbmRpbmdTcmMuc3dhcChyZXN0KTsKKyAg
ICBhcHBlbmQocmVzdC5kYXRhKCksIHJlc3Quc2l6ZSgpKTsKIAogICAgIC8vIEZpbmFsbHksIGlm
IGZpbmlzaCgpIGhhcyBiZWVuIGNhbGxlZCBhbmQgd3JpdGUoKSBkaWRuJ3QgcmVzdWx0CiAgICAg
Ly8gaW4gYW55IGZ1cnRoZXIgY2FsbGJhY2tzIGJlaW5nIHF1ZXVlZCwgY2FsbCBlbmQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79118</attachid>
            <date>2011-01-16 17:01:15 -0800</date>
            <delta_ts>2011-01-16 17:01:37 -0800</delta_ts>
            <desc>Work in progress</desc>
            <filename>parser.patch</filename>
            <type>text/plain</type>
            <size>6651</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IGE1ZDNjMDguLmJh
MTI4ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMTIx
LDIyICsxMjEsMjYgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6aW5zZXJ0KGNvbnN0IFNlZ21l
bnRlZFN0cmluZyYpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgWE1MRG9j
dW1lbnRQYXJzZXI6OmFwcGVuZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHMpCit2b2lkIFhNTERv
Y3VtZW50UGFyc2VyOjphcHBlbmQoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCiB7Ci0g
ICAgU3RyaW5nIHBhcnNlU3RyaW5nID0gcy50b1N0cmluZygpOworICAgIENTdHJpbmcgdGVtcFN0
cmluZyA9IHNvdXJjZS50b1N0cmluZygpLnV0ZjgoKTsKKyAgICBhcHBlbmRCeXRlcygwLCB0ZW1w
U3RyaW5nLmRhdGEoKSwgdGVtcFN0cmluZy5sZW5ndGgoKSwgdHJ1ZSk7Cit9CiAKK3ZvaWQgWE1M
RG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyKiwgY29uc3QgY2hhciog
Ynl0ZXMsIGludCBsZW5ndGgsIGJvb2wpCit7CiAgICAgaWYgKG1fc2F3WFNMVHJhbnNmb3JtIHx8
ICFtX3Nhd0ZpcnN0RWxlbWVudCkKLSAgICAgICAgbV9vcmlnaW5hbFNvdXJjZUZvclRyYW5zZm9y
bSArPSBwYXJzZVN0cmluZzsKKyAgICAgICAgbV9vcmlnaW5hbFNvdXJjZUZvclRyYW5zZm9ybS5h
cHBlbmQoYnl0ZXMsIGxlbmd0aCk7CiAKICAgICBpZiAoaXNTdG9wcGVkKCkgfHwgbV9zYXdYU0xU
cmFuc2Zvcm0pCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3BhcnNlclBhdXNlZCkgewot
ICAgICAgICBtX3BlbmRpbmdTcmMuYXBwZW5kKHMpOworICAgICAgICBtX3BlbmRpbmdTcmMuYXBw
ZW5kKGJ5dGVzLCBsZW5ndGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZG9Xcml0
ZShzLnRvU3RyaW5nKCkpOworICAgIGRvV3JpdGUoYnl0ZXMsIGxlbmd0aCk7CiAKICAgICAvLyBB
ZnRlciBwYXJzaW5nLCBnbyBhaGVhZCBhbmQgZGlzcGF0Y2ggaW1hZ2UgYmVmb3JlbG9hZCBldmVu
dHMuCiAgICAgSW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0JlZm9yZUxvYWRFdmVudHMoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlci5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyLmgKaW5kZXggNzUzM2M1Yi4uZDUwNjNh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyLmgKQEAgLTExNSw2ICsxMTUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEZyb20gRG9jdW1lbnRQYXJzZXIK
ICAgICAgICAgdmlydHVhbCB2b2lkIGluc2VydChjb25zdCBTZWdtZW50ZWRTdHJpbmcmKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmKTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyKiwgY29uc3QgY2hhciog
Ynl0ZXMsIGludCBsZW5ndGgsIGJvb2wgZmx1c2gpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZmlu
aXNoKCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBmaW5pc2hXYXNDYWxsZWQoKTsKICAgICAgICAg
dmlydHVhbCBib29sIGlzV2FpdGluZ0ZvclNjcmlwdHMoKSBjb25zdDsKQEAgLTE3MywxMiArMTc0
LDEyIEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBlbnRlclRleHQoKTsKICAgICAgICAgdm9pZCBl
eGl0VGV4dCgpOwogCi0gICAgICAgIHZvaWQgZG9Xcml0ZShjb25zdCBTdHJpbmcmKTsKKyAgICAg
ICAgdm9pZCBkb1dyaXRlKGNvbnN0IGNoYXIqLCBpbnQpOwogICAgICAgICB2b2lkIGRvRW5kKCk7
CiAKICAgICAgICAgRnJhbWVWaWV3KiBtX3ZpZXc7CiAKLSAgICAgICAgU3RyaW5nIG1fb3JpZ2lu
YWxTb3VyY2VGb3JUcmFuc2Zvcm07CisgICAgICAgIFZlY3RvcjxjaGFyPiBtX29yaWdpbmFsU291
cmNlRm9yVHJhbnNmb3JtOwogCiAjaWYgVVNFKFFYTUxTVFJFQU0pCiAgICAgICAgIFFYbWxTdHJl
YW1SZWFkZXIgbV9zdHJlYW07CkBAIC0yMTgsMTEgKzIxOSwxMiBAQCBwdWJsaWM6CiAKICAgICAg
ICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZywgQXRvbWljU3RyaW5nPiBQcmVmaXhGb3JO
YW1lc3BhY2VNYXA7CiAgICAgICAgIFByZWZpeEZvck5hbWVzcGFjZU1hcCBtX3ByZWZpeFRvTmFt
ZXNwYWNlTWFwOwotICAgICAgICBTZWdtZW50ZWRTdHJpbmcgbV9wZW5kaW5nU3JjOworICAgICAg
ICBWZWN0b3I8Y2hhcj4gbV9wZW5kaW5nU3JjOwogICAgICAgICBGcmFnbWVudFNjcmlwdGluZ1Bl
cm1pc3Npb24gbV9zY3JpcHRpbmdQZXJtaXNzaW9uOwogICAgIH07CiAKICNpZiBFTkFCTEUoWFNM
VCkKK3ZvaWQqIHhtbERvY1B0ckZvclZlY3RvcihDYWNoZWRSZXNvdXJjZUxvYWRlciosIGNvbnN0
IFZlY3RvcjxjaGFyPiYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCk7CiB2b2lkKiB4bWxEb2NQ
dHJGb3JTdHJpbmcoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwg
Y29uc3QgU3RyaW5nJiB1cmwpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggMGY2YjRiNC4uMzY0YjdkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTM2
NCwxNSArMzY0LDE1IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9jdXJyZW50T2Zmc2V0Owog
fTsKIAotc3RhdGljIHZvaWQgc3dpdGNoVG9VVEYxNih4bWxQYXJzZXJDdHh0UHRyIGN0eHQpCitz
dGF0aWMgdm9pZCBzd2l0Y2hUb1VURjE2KHhtbFBhcnNlckN0eHRQdHIgLypjdHh0Ki8pCiB7CiAg
ICAgLy8gSGFjayBhcm91bmQgbGlieG1sMidzIGxhY2sgb2YgZW5jb2Rpbmcgb3ZlcmlkZSBzdXBw
b3J0IGJ5IG1hbnVhbGx5CiAgICAgLy8gcmVzZXR0aW5nIHRoZSBlbmNvZGluZyB0byBVVEYtMTYg
YmVmb3JlIGV2ZXJ5IGNodW5rLiAgT3RoZXJ3aXNlIGxpYnhtbAogICAgIC8vIHdpbGwgZGV0ZWN0
IDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IjxlbmNvZGluZyBuYW1lPiI/PiBibG9ja3MK
ICAgICAvLyBhbmQgc3dpdGNoIGVuY29kaW5ncywgY2F1c2luZyB0aGUgcGFyc2UgdG8gZmFpbC4K
LSAgICBjb25zdCBVQ2hhciBCT00gPSAweEZFRkY7CisvKiAgICBjb25zdCBVQ2hhciBCT00gPSAw
eEZFRkY7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciBCT01IaWdoQnl0ZSA9ICpyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPigmQk9NKTsKLSAgICB4bWxTd2l0Y2hFbmNvZGlu
ZyhjdHh0LCBCT01IaWdoQnl0ZSA9PSAweEZGID8gWE1MX0NIQVJfRU5DT0RJTkdfVVRGMTZMRSA6
IFhNTF9DSEFSX0VOQ09ESU5HX1VURjE2QkUpOworICAgIHhtbFN3aXRjaEVuY29kaW5nKGN0eHQs
IEJPTUhpZ2hCeXRlID09IDB4RkYgPyBYTUxfQ0hBUl9FTkNPRElOR19VVEYxNkxFIDogWE1MX0NI
QVJfRU5DT0RJTkdfVVRGMTZCRSk7Ki8KIH0KIAogc3RhdGljIGJvb2wgc2hvdWxkQWxsb3dFeHRl
cm5hbExvYWQoY29uc3QgS1VSTCYgdXJsKQpAQCAtNjQwLDcgKzY0MCw3IEBAIFhNTERvY3VtZW50
UGFyc2VyOjp+WE1MRG9jdW1lbnRQYXJzZXIoKQogICAgICAgICBtX3BlbmRpbmdTY3JpcHQtPnJl
bW92ZUNsaWVudCh0aGlzKTsKIH0KIAotdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6ZG9Xcml0ZShj
b25zdCBTdHJpbmcmIHBhcnNlU3RyaW5nKQordm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6ZG9Xcml0
ZShjb25zdCBjaGFyKiBjaHVuaywgaW50IGxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWlzRGV0YWNo
ZWQoKSk7CiAgICAgaWYgKCFtX2NvbnRleHQpCkBAIC02NTAsMTQgKzY1MCwxNCBAQCB2b2lkIFhN
TERvY3VtZW50UGFyc2VyOjpkb1dyaXRlKGNvbnN0IFN0cmluZyYgcGFyc2VTdHJpbmcpCiAgICAg
UmVmUHRyPFhNTFBhcnNlckNvbnRleHQ+IGNvbnRleHQgPSBtX2NvbnRleHQ7CiAKICAgICAvLyBs
aWJYTUwgdGhyb3dzIGFuIGVycm9yIGlmIHlvdSB0cnkgdG8gc3dpdGNoIHRoZSBlbmNvZGluZyBm
b3IgYW4gZW1wdHkgc3RyaW5nLgotICAgIGlmIChwYXJzZVN0cmluZy5sZW5ndGgoKSkgeworICAg
IGlmIChsZW5ndGgpIHsKICAgICAgICAgLy8gSmF2YVNjcmlwdCBtYXkgY2F1c2UgdGhlIHBhcnNl
ciB0byBkZXRhY2ggZHVyaW5nIHhtbFBhcnNlQ2h1bmsKICAgICAgICAgLy8ga2VlcCB0aGlzIGFs
aXZlIHVudGlsIHRoaXMgZnVuY3Rpb24gaXMgZG9uZS4KICAgICAgICAgUmVmUHRyPFhNTERvY3Vt
ZW50UGFyc2VyPiBwcm90ZWN0KHRoaXMpOwogCiAgICAgICAgIHN3aXRjaFRvVVRGMTYoY29udGV4
dC0+Y29udGV4dCgpKTsKICAgICAgICAgWE1MRG9jdW1lbnRQYXJzZXJTY29wZSBzY29wZShkb2N1
bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKTsKLSAgICAgICAgeG1sUGFyc2VDaHVuayhj
b250ZXh0LT5jb250ZXh0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHBhcnNlU3Ry
aW5nLmNoYXJhY3RlcnMoKSksIHNpemVvZihVQ2hhcikgKiBwYXJzZVN0cmluZy5sZW5ndGgoKSwg
MCk7CisgICAgICAgIHhtbFBhcnNlQ2h1bmsoY29udGV4dC0+Y29udGV4dCgpLCBjaHVuaywgbGVu
Z3RoLCAwKTsKIAogICAgICAgICAvLyBKYXZhU2NyaXB0ICh3aGljaCBtYXkgYmUgcnVuIHVuZGVy
IHRoZSB4bWxQYXJzZUNodW5rIGNhbGxzdGFjaykgbWF5CiAgICAgICAgIC8vIGNhdXNlIHRoZSBw
YXJzZXIgdG8gYmUgc3RvcHBlZCBvciBkZXRhY2hlZC4KQEAgLTEzMjQsNyArMTMyNCw3IEBAIHZv
aWQgWE1MRG9jdW1lbnRQYXJzZXI6OmRvRW5kKCkKIHsKICNpZiBFTkFCTEUoWFNMVCkKICAgICBp
ZiAobV9zYXdYU0xUcmFuc2Zvcm0pIHsKLSAgICAgICAgdm9pZCogZG9jID0geG1sRG9jUHRyRm9y
U3RyaW5nKGRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCksIG1fb3JpZ2luYWxTb3Vy
Y2VGb3JUcmFuc2Zvcm0sIGRvY3VtZW50KCktPnVybCgpLnN0cmluZygpKTsKKyAgICAgICAgdm9p
ZCogZG9jID0geG1sRG9jUHRyRm9yVmVjdG9yKGRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9h
ZGVyKCksIG1fb3JpZ2luYWxTb3VyY2VGb3JUcmFuc2Zvcm0sIGRvY3VtZW50KCktPnVybCgpLnN0
cmluZygpKTsKICAgICAgICAgZG9jdW1lbnQoKS0+c2V0VHJhbnNmb3JtU291cmNlKG5ldyBUcmFu
c2Zvcm1Tb3VyY2UoZG9jKSk7CiAKICAgICAgICAgZG9jdW1lbnQoKS0+c2V0UGFyc2luZyhmYWxz
ZSk7IC8vIE1ha2UgdGhlIGRvYyB0aGluayBpdCdzIGRvbmUsIHNvIGl0IHdpbGwgYXBwbHkgeHNs
IHNoZWV0cy4KQEAgLTEzNDksNiArMTM0OSwxNSBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpk
b0VuZCgpCiB9CiAKICNpZiBFTkFCTEUoWFNMVCkKK3ZvaWQqIHhtbERvY1B0ckZvclZlY3RvcihD
YWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIsIGNvbnN0IFZlY3Rvcjxj
aGFyPiYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBpZiAoc291cmNlLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBYTUxEb2N1bWVudFBhcnNlclNjb3BlIHNj
b3BlKGNhY2hlZFJlc291cmNlTG9hZGVyLCBlcnJvckZ1bmMsIDApOworICAgIHJldHVybiB4bWxS
ZWFkTWVtb3J5KHNvdXJjZS5kYXRhKCksIHNvdXJjZS5zaXplKCksIHVybC5sYXRpbjEoKS5kYXRh
KCksIDAsIFhTTFRfUEFSU0VfT1BUSU9OUyk7Cit9CisgCiB2b2lkKiB4bWxEb2NQdHJGb3JTdHJp
bmcoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyLCBjb25zdCBTdHJp
bmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgaWYgKHNvdXJjZS5pc0VtcHR5
KCkpCkBAIC0xNDI5LDkgKzE0MzgsOSBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpyZXN1bWVQ
YXJzaW5nKCkKICAgICB9CiAKICAgICAvLyBUaGVuLCB3cml0ZSBhbnkgcGVuZGluZyBkYXRhCi0g
ICAgU2VnbWVudGVkU3RyaW5nIHJlc3QgPSBtX3BlbmRpbmdTcmM7Ci0gICAgbV9wZW5kaW5nU3Jj
LmNsZWFyKCk7Ci0gICAgYXBwZW5kKHJlc3QpOworICAgIFZlY3RvcjxjaGFyPiByZXN0OworICAg
IG1fcGVuZGluZ1NyYy5zd2FwKHJlc3QpOworICAgIGFwcGVuZEJ5dGVzKDAsIHJlc3QuZGF0YSgp
LCByZXN0LnNpemUoKSwgdHJ1ZSk7CiAKICAgICAvLyBGaW5hbGx5LCBpZiBmaW5pc2goKSBoYXMg
YmVlbiBjYWxsZWQgYW5kIHdyaXRlKCkgZGlkbid0IHJlc3VsdAogICAgIC8vIGluIGFueSBmdXJ0
aGVyIGNhbGxiYWNrcyBiZWluZyBxdWV1ZWQsIGNhbGwgZW5kKCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>