<?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>6900</bug_id>
          
          <creation_ts>2006-01-28 20:46:38 -0800</creation_ts>
          <short_desc>apply Vector class to KURL</short_desc>
          <delta_ts>2006-01-29 19:46:13 -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>WebKit Misc.</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>30459</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-01-28 20:46:38 -0800</bug_when>
    <thetext>KURL should use Vector for its stack buffers, and in place of Array.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30460</commentid>
    <comment_count>1</comment_count>
      <attachid>6062</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-01-28 21:09:06 -0800</bug_when>
    <thetext>Created attachment 6062
apply Vector to KURL

I ran performance tests and found no regression. Also all the layout tests pass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30461</commentid>
    <comment_count>2</comment_count>
      <attachid>6062</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-01-28 21:14:10 -0800</bug_when>
    <thetext>Comment on attachment 6062
apply Vector to KURL

Looks good. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30501</commentid>
    <comment_count>3</comment_count>
      <attachid>6062</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-01-29 06:09:08 -0800</bug_when>
    <thetext>Comment on attachment 6062
apply Vector to KURL

&gt;Index: kwq/KWQKURL.mm
&gt;===================================================================
&gt;--- kwq/KWQKURL.mm	(revision 12427)
&gt;+++ kwq/KWQKURL.mm	(working copy)
&gt;@@ -238,15 +231,9 @@ KURL::KURL() : m_isValid(false)
&gt; KURL::KURL(const char *url)
&gt; {
&gt;     if (url &amp;&amp; url[0] == &apos;/&apos;) {
&gt;-        char staticBuffer[2048];
&gt;-        char *buffer;
&gt;+         // 5 for &quot;file:&quot;, 1 for terminator
&gt;         size_t urlLength = strlen(url) + 1;
&gt;-        size_t bufferLength = urlLength + 5; // 5 for &quot;file:&quot;
&gt;-        if (bufferLength &gt; sizeof(staticBuffer)) {
&gt;-            buffer = (char *)fastMalloc(bufferLength);
&gt;-        } else {
&gt;-            buffer = staticBuffer;
&gt;-        }
&gt;+        Vector&lt;char, 2048&gt; buffer(urlLength + 5);
&gt;         buffer[0] = &apos;f&apos;;
&gt;         buffer[1] = &apos;i&apos;;
&gt;         buffer[2] = &apos;l&apos;;

Shouldn&apos;t the &quot;5&quot; be a &quot;6&quot; in the new Vector declaration above?

Also, it seems that every time that Vector is used, a &quot;1&quot; must be explicitly added for the terminator character.  Wouldn&apos;t it be best to pull this behavior back into the template class and automatically add 1 for the caller?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30502</commentid>
    <comment_count>4</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-01-29 06:09:28 -0800</bug_when>
    <thetext>Reopening per Comment #3.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30579</commentid>
    <comment_count>5</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-01-29 19:46:13 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Shouldn&apos;t the &quot;5&quot; be a &quot;6&quot; in the new Vector declaration above?

FYI, the &quot;+ 1&quot; is added on the line above, so this isn&apos;t an issue.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6062</attachid>
            <date>2006-01-28 21:09:06 -0800</date>
            <delta_ts>2006-01-28 21:14:10 -0800</delta_ts>
            <desc>apply Vector to KURL</desc>
            <filename>kurl-vector.patch.txt</filename>
            <type>text/plain</type>
            <size>12736</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEyNDM1
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDYtMDEt
MjggIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIGNvbnZlcnRlZCBLV1FLVVJMIHRvIHVz
ZSBWZWN0b3IKKyAgICAgICAgOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dp
P2lkPTY5MDAKKworICAgICAgICBVc2UgVmVjdG9yIGluIHBsYWNlIG9mIEFycmF5LCBhbmQgaW4g
cGxhY2Ugb2YgdGhlIGN1c3RvbSBzdGFjaworICAgICAgICBidWZmZXJzIHdpdGggb3ZlcmZsb3cu
CisgICAgICAgIAorICAgICAgICAqIGt3cS9LV1FLVVJMLm1tOgorICAgICAgICAoS1VSTDo6S1VS
TCk6CisgICAgICAgIChLVVJMOjpkZWNvZGVfc3RyaW5nKToKKyAgICAgICAgKEtVUkw6OnBhcnNl
KToKKyAgICAgICAgKEtVUkw6OmVuY29kZV9zdHJpbmcpOgorICAgICAgICAoZmluZEhvc3RuYW1l
c0luTWFpbFRvVVJMKToKKyAgICAgICAgKGVuY29kZUhvc3RuYW1lcyk6CisKIDIwMDYtMDEtMjgg
IE1pdHogUGV0dGVsICA8b3BlbmRhcndpbi5vcmdAbWl0enBldHRlbC5jb20+CiAKICAgICAgICAg
VGVzdDogZmFzdC90YWJsZS9hZGQtYmVmb3JlLWFub255bW91cy1jaGlsZC5odG1sCkluZGV4OiBr
d3EvS1dRS1VSTC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrd3EvS1dRS1VSTC5tbQkocmV2aXNpb24gMTI0
MjcpCisrKyBrd3EvS1dRS1VSTC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAsMTkgKzMwLDEyIEBA
CiAjaW1wb3J0ICJLV1FGb3VuZGF0aW9uRXh0cmFzLmgiCiAjaW1wb3J0ICJLV1FSZWdFeHAuaCIK
ICNpbXBvcnQgIktXUVRleHRDb2RlYy5oIgotI2ltcG9ydCAiQXJyYXkuaCIKLSNpbXBvcnQgIktX
UVZhbHVlTGlzdC5oIgotCi0vLyBGSVhNRTogU2hvdWxkIGdldCB0aGlzIGZyb20gYSBoZWFkZXIu
Ci1leHRlcm4gIkMiIGludCBtYWxsb2NfZ29vZF9zaXplKGludCBzaXplKTsKLQorI2ltcG9ydCA8
a3htbGNvcmUvVmVjdG9yLmg+CiAjaW1wb3J0IDx1bmljb2RlL3VpZG5hLmg+CisjaW1wb3J0IDx1
dGlsaXR5PgogCi1zdHJ1Y3QgS1dRSW50ZWdlclBhaXIgewotICAgIEtXUUludGVnZXJQYWlyKGlu
dCBzLCBpbnQgZSkgOiBzdGFydChzKSwgZW5kKGUpIHsgfQotICAgIGludCBzdGFydDsKLSAgICBp
bnQgZW5kOwotfTsKK3VzaW5nIHN0ZDo6cGFpcjsKK3VzaW5nIHN0ZDo6bWFrZV9wYWlyOwogCiAv
LyBUaGUgc2ltcGxlIENvY29hIGNhbGxzIHRvIE5TU3RyaW5nLCBOU1VSTCBhbmQgTlNEYXRhIGNh
bid0IHRocm93IHNvCiAvLyBubyBuZWVkIHRvIGJsb2NrIE5TRXhjZXB0aW9ucyBoZXJlLgpAQCAt
MjM4LDE1ICsyMzEsOSBAQCBLVVJMOjpLVVJMKCkgOiBtX2lzVmFsaWQoZmFsc2UpCiBLVVJMOjpL
VVJMKGNvbnN0IGNoYXIgKnVybCkKIHsKICAgICBpZiAodXJsICYmIHVybFswXSA9PSAnLycpIHsK
LSAgICAgICAgY2hhciBzdGF0aWNCdWZmZXJbMjA0OF07Ci0gICAgICAgIGNoYXIgKmJ1ZmZlcjsK
KyAgICAgICAgIC8vIDUgZm9yICJmaWxlOiIsIDEgZm9yIHRlcm1pbmF0b3IKICAgICAgICAgc2l6
ZV90IHVybExlbmd0aCA9IHN0cmxlbih1cmwpICsgMTsKLSAgICAgICAgc2l6ZV90IGJ1ZmZlckxl
bmd0aCA9IHVybExlbmd0aCArIDU7IC8vIDUgZm9yICJmaWxlOiIKLSAgICAgICAgaWYgKGJ1ZmZl
ckxlbmd0aCA+IHNpemVvZihzdGF0aWNCdWZmZXIpKSB7Ci0gICAgICAgICAgICBidWZmZXIgPSAo
Y2hhciAqKWZhc3RNYWxsb2MoYnVmZmVyTGVuZ3RoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGJ1ZmZlciA9IHN0YXRpY0J1ZmZlcjsKLSAgICAgICAgfQorICAgICAgICBWZWN0b3I8
Y2hhciwgMjA0OD4gYnVmZmVyKHVybExlbmd0aCArIDUpOwogICAgICAgICBidWZmZXJbMF0gPSAn
Zic7CiAgICAgICAgIGJ1ZmZlclsxXSA9ICdpJzsKICAgICAgICAgYnVmZmVyWzJdID0gJ2wnOwpA
QCAtMjU0LDI1ICsyNDEsMTUgQEAgS1VSTDo6S1VSTChjb25zdCBjaGFyICp1cmwpCiAgICAgICAg
IGJ1ZmZlcls0XSA9ICc6JzsKICAgICAgICAgbWVtY3B5KCZidWZmZXJbNV0sIHVybCwgdXJsTGVu
Z3RoKTsKICAgICAgICAgcGFyc2UoYnVmZmVyLCAwKTsKLSAgICAgICAgaWYgKGJ1ZmZlciAhPSBz
dGF0aWNCdWZmZXIpIHsKLSAgICAgICAgICAgIGZhc3RGcmVlKGJ1ZmZlcik7Ci0gICAgICAgIH0K
LSAgICB9IGVsc2UgeworICAgIH0gZWxzZQogICAgICAgICBwYXJzZSh1cmwsIDApOwotICAgIH0K
IH0KIAogS1VSTDo6S1VSTChjb25zdCBRU3RyaW5nICZ1cmwpCiB7CiAgICAgaWYgKCF1cmwuaXNF
bXB0eSgpICYmIHVybFswXSA9PSAnLycpIHsKLSAgICAgICAgY2hhciBzdGF0aWNCdWZmZXJbMjA0
OF07Ci0gICAgICAgIGNoYXIgKmJ1ZmZlcjsKLSAgICAgICAgc2l6ZV90IGJ1ZmZlckxlbmd0aCA9
IHVybC5sZW5ndGgoKSArIDY7IC8vIDUgZm9yICJmaWxlOiIsIDEgZm9yIHRlcm1pbmF0b3IKLSAg
ICAgICAgaWYgKGJ1ZmZlckxlbmd0aCA+IHNpemVvZihzdGF0aWNCdWZmZXIpKSB7Ci0gICAgICAg
ICAgICBidWZmZXIgPSAoY2hhciAqKWZhc3RNYWxsb2MoYnVmZmVyTGVuZ3RoKTsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIGJ1ZmZlciA9IHN0YXRpY0J1ZmZlcjsKLSAgICAgICAgfQor
ICAgICAgICAvLyA1IGZvciAiZmlsZToiLCAxIGZvciB0ZXJtaW5hdG9yCisgICAgICAgIFZlY3Rv
cjxjaGFyLCAyMDQ4PiBidWZmZXIodXJsLmxlbmd0aCgpICsgNik7CiAgICAgICAgIGJ1ZmZlclsw
XSA9ICdmJzsKICAgICAgICAgYnVmZmVyWzFdID0gJ2knOwogICAgICAgICBidWZmZXJbMl0gPSAn
bCc7CkBAIC0yODAsMjYgKzI1NywxNSBAQCBLVVJMOjpLVVJMKGNvbnN0IFFTdHJpbmcgJnVybCkK
ICAgICAgICAgYnVmZmVyWzRdID0gJzonOwogICAgICAgICB1cmwuY29weUxhdGluMSgmYnVmZmVy
WzVdKTsKICAgICAgICAgcGFyc2UoYnVmZmVyLCAwKTsKLSAgICAgICAgaWYgKGJ1ZmZlciAhPSBz
dGF0aWNCdWZmZXIpIHsKLSAgICAgICAgICAgIGZhc3RGcmVlKGJ1ZmZlcik7Ci0gICAgICAgIH0K
LSAgICB9IGVsc2UgeworICAgIH0gZWxzZQogICAgICAgICBwYXJzZSh1cmwuYXNjaWkoKSwgJnVy
bCk7Ci0gICAgfQogfQogCiBLVVJMOjpLVVJMKE5TVVJMICp1cmwpCiB7CiAgICAgaWYgKHVybCkg
ewogICAgICAgICBDRkluZGV4IGJ5dGVzTGVuZ3RoID0gQ0ZVUkxHZXRCeXRlcygoQ0ZVUkxSZWYp
dXJsLCAwLCAwKTsKLSAgICAgICAgc2l6ZV90IGJ1ZmZlckxlbmd0aCA9IGJ5dGVzTGVuZ3RoICsg
NjsgLy8gNSBmb3IgImZpbGU6IiwgMSBmb3IgTlVMIHRlcm1pbmF0b3IKLSAgICAgICAgY2hhciBz
dGF0aWNCdWZmZXJbMjA0OF07Ci0gICAgICAgIGNoYXIgKmJ1ZmZlcjsKLSAgICAgICAgaWYgKGJ1
ZmZlckxlbmd0aCA+IHNpemVvZihzdGF0aWNCdWZmZXIpKSB7Ci0gICAgICAgICAgICBidWZmZXIg
PSAoY2hhciAqKWZhc3RNYWxsb2MoYnVmZmVyTGVuZ3RoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIGJ1ZmZlciA9IHN0YXRpY0J1ZmZlcjsKLSAgICAgICAgfQorICAgICAgICBWZWN0
b3I8Y2hhciwgMjA0OD4gYnVmZmVyKGJ5dGVzTGVuZ3RoICsgNik7ICAvLyA1IGZvciAiZmlsZToi
LCAxIGZvciBOVUwgdGVybWluYXRvcgogICAgICAgICBjaGFyICpieXRlcyA9ICZidWZmZXJbNV07
CiAgICAgICAgIENGVVJMR2V0Qnl0ZXMoKENGVVJMUmVmKXVybCwgKFVJbnQ4ICopYnl0ZXMsIGJ5
dGVzTGVuZ3RoKTsKICAgICAgICAgYnl0ZXNbYnl0ZXNMZW5ndGhdID0gJ1wwJzsKQEAgLTMxMCwx
NiArMjc2LDEwIEBAIEtVUkw6OktVUkwoTlNVUkwgKnVybCkKICAgICAgICAgICAgIGJ1ZmZlclsz
XSA9ICdlJzsKICAgICAgICAgICAgIGJ1ZmZlcls0XSA9ICc6JzsKICAgICAgICAgICAgIHBhcnNl
KGJ1ZmZlciwgMCk7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgcGFyc2UoYnl0ZXMsIDApOwotICAgICAgICB9Ci0gICAgICAgIGlmIChidWZmZXIgIT0gc3Rh
dGljQnVmZmVyKSB7Ci0gICAgICAgICAgICBmYXN0RnJlZShidWZmZXIpOwotICAgICAgICB9Ci0g
ICAgfQotICAgIGVsc2UgeworICAgIH0gZWxzZQogICAgICAgICBwYXJzZSgiIiwgMCk7Ci0gICAg
fQogfQogCiBLVVJMOjpLVVJMKGNvbnN0IEtVUkwgJmJhc2UsIGNvbnN0IFFTdHJpbmcgJnJlbGF0
aXZlLCBjb25zdCBRVGV4dENvZGVjICpjb2RlYykKQEAgLTQ0OSwxOCArNDA5LDkgQEAgS1VSTDo6
S1VSTChjb25zdCBLVVJMICZiYXNlLCBjb25zdCBRU3RyaQogICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgIC8vIG11c3QgYmUgcmVsYXRpdmUtcGF0aCByZWZlcmVuY2UKIAotICAgICAgICAg
ICAgICAgIGNoYXIgc3RhdGljQnVmZmVyWzIwNDhdOwotICAgICAgICAgICAgICAgIGNoYXIgKmJ1
ZmZlcjsKLSAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBCYXNlIHBhcnQgcGx1
cyByZWxhdGl2ZSBwYXJ0IHBsdXMgb25lIHBvc3NpYmxlIHNsYXNoIGFkZGVkIGluIGJldHdlZW4g
cGx1cyB0ZXJtaW5hdGluZyBcMCBieXRlLgotICAgICAgICAgICAgICAgIHNpemVfdCBidWZmZXJM
ZW5ndGggPSBiYXNlLnBhdGhFbmRQb3MgKyAxICsgc3RybGVuKHN0cikgKyAxOworICAgICAgICAg
ICAgICAgIFZlY3RvcjxjaGFyLCAyMDQ4PiBidWZmZXIoYmFzZS5wYXRoRW5kUG9zICsgMSArIHN0
cmxlbihzdHIpICsgMSk7CiAKLSAgICAgICAgICAgICAgICBpZiAoYnVmZmVyTGVuZ3RoID4gc2l6
ZW9mKHN0YXRpY0J1ZmZlcikpIHsKLSAgICAgICAgICAgICAgICAgICAgYnVmZmVyID0gKGNoYXIg
KilmYXN0TWFsbG9jKGJ1ZmZlckxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgYnVmZmVyID0gc3RhdGljQnVmZmVyOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjaGFyICpidWZmZXJQb3MgPSBi
dWZmZXI7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgLy8gZmlyc3QgY29weSBl
dmVyeXRoaW5nIGJlZm9yZSB0aGUgcGF0aCBmcm9tIHRoZSBiYXNlCkBAIC01MzEsMTIgKzQ4Miw3
IEBAIEtVUkw6OktVUkwoY29uc3QgS1VSTCAmYmFzZSwgY29uc3QgUVN0cmkKIAogICAgICAgICAg
ICAgICAgIHBhcnNlKGJ1ZmZlciwgMCk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgQVNTRVJUKHN0cmxlbihidWZmZXIpICsgMSA8PSBidWZmZXJMZW5ndGgpOwotICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChidWZmZXIgIT0gc3RhdGljQnVmZmVyKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGZhc3RGcmVlKGJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIEFTU0VSVChzdHJsZW4oYnVmZmVyKSAr
IDEgPD0gYnVmZmVyLnNpemUoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KQEAgLTgwNyw5ICs3NTMsNyBAQCBRU3RyaW5nIEtVUkw6OmRlY29kZV9z
dHJpbmcoY29uc3QgUVN0cmluCiAKICAgICBRU3RyaW5nIHJlc3VsdCgiIik7CiAKLSAgICBjaGFy
IHN0YXRpY0J1ZmZlclsyMDQ4XTsKLSAgICBjaGFyICpidWZmZXIgPSBzdGF0aWNCdWZmZXI7Ci0g
ICAgaW50IGJ1ZmZlckxlbmd0aCA9IHNpemVvZihzdGF0aWNCdWZmZXIpOworICAgIFZlY3Rvcjxj
aGFyLCAyMDQ4PiBidWZmZXIoMCk7CiAKICAgICBpbnQgbGVuZ3RoID0gdXJsU3RyaW5nLmxlbmd0
aCgpOwogICAgIGludCBkZWNvZGVkUG9zaXRpb24gPSAwOwpAQCAtODMxLDEyICs3NzUsOCBAQCBR
U3RyaW5nIEtVUkw6OmRlY29kZV9zdHJpbmcoY29uc3QgUVN0cmluCiAKICAgICAgICAgLy8gQ29w
eSB0aGUgZW50aXJlICUtZXNjYXBlIHNlcXVlbmNlIGludG8gYW4gOC1iaXQgYnVmZmVyLgogICAg
ICAgICBpbnQgZW5jb2RlZFJ1bkxlbmd0aCA9IGVuY29kZWRSdW5FbmQgLSBlbmNvZGVkUnVuUG9z
aXRpb247Ci0gICAgICAgIGlmIChlbmNvZGVkUnVuTGVuZ3RoICsgMSA+IGJ1ZmZlckxlbmd0aCkg
ewotICAgICAgICAgICAgaWYgKGJ1ZmZlciAhPSBzdGF0aWNCdWZmZXIpCi0gICAgICAgICAgICAg
ICAgZmFzdEZyZWUoYnVmZmVyKTsKLSAgICAgICAgICAgIGJ1ZmZlckxlbmd0aCA9IG1hbGxvY19n
b29kX3NpemUoZW5jb2RlZFJ1bkxlbmd0aCArIDEpOwotICAgICAgICAgICAgYnVmZmVyID0gc3Rh
dGljX2Nhc3Q8Y2hhciAqPihmYXN0TWFsbG9jKGJ1ZmZlckxlbmd0aCkpOwotICAgICAgICB9Cisg
ICAgICAgIGJ1ZmZlci5jbGVhcigpOworICAgICAgICBidWZmZXIucmVzaXplKGVuY29kZWRSdW5M
ZW5ndGggKyAxKTsKICAgICAgICAgdXJsU3RyaW5nLmNvcHlMYXRpbjEoYnVmZmVyLCBlbmNvZGVk
UnVuUG9zaXRpb24sIGVuY29kZWRSdW5MZW5ndGgpOwogCiAgICAgICAgIC8vIERlY29kZSB0aGUg
JS1lc2NhcGVzIGludG8gYnl0ZXMuCkBAIC04NjAsMTAgKzgwMCw2IEBAIFFTdHJpbmcgS1VSTDo6
ZGVjb2RlX3N0cmluZyhjb25zdCBRU3RyaW4KICAgICB9CiAKICAgICByZXN1bHQuYXBwZW5kKHVy
bFN0cmluZy5taWQoZGVjb2RlZFBvc2l0aW9uLCBsZW5ndGggLSBkZWNvZGVkUG9zaXRpb24pKTsK
LQotICAgIGlmIChidWZmZXIgIT0gc3RhdGljQnVmZmVyKQotICAgICAgICBmYXN0RnJlZShidWZm
ZXIpOwotCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTE1MSwxNCArMTA4Nyw3IEBAIHZv
aWQgS1VSTDo6cGFyc2UoY29uc3QgY2hhciAqdXJsLCBjb25zdCAKIAogICAgIC8vIGFzc2VtYmxl
IGl0IGFsbCwgcmVtZW1iZXJpbmcgdGhlIHJlYWwgcmFuZ2VzCiAKLSAgICBjaGFyIHN0YXRpY0J1
ZmZlcls0MDk2XTsKLSAgICBjaGFyICpidWZmZXI7Ci0gICAgdWludCBidWZmZXJMZW5ndGggPSBm
cmFnbWVudEVuZCAqIDMgKyAxOwotICAgIGlmIChidWZmZXJMZW5ndGggPD0gc2l6ZW9mKHN0YXRp
Y0J1ZmZlcikpIHsKLSAgICAgICAgYnVmZmVyID0gc3RhdGljQnVmZmVyOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIGJ1ZmZlciA9IChjaGFyICopZmFzdE1hbGxvYyhidWZmZXJMZW5ndGgpOwotICAg
IH0KKyAgICBWZWN0b3I8Y2hhciwgNDA5Nj4gYnVmZmVyKGZyYWdtZW50RW5kICogMyArIDEpOwog
CiAgICAgY2hhciAqcCA9IGJ1ZmZlcjsKICAgICBjb25zdCBjaGFyICpzdHJQdHIgPSB1cmw7CkBA
IC0xMjc3LDIzICsxMjA2LDEyIEBAIHZvaWQgS1VSTDo6cGFyc2UoY29uc3QgY2hhciAqdXJsLCBj
b25zdCAKICAgICAvLyBhZGQgcGF0aCwgZXNjYXBpbmcgYmFkIGNoYXJhY3RlcnMKICAgICAKICAg
ICBpZiAoaGllcmFyY2hpY2FsICYmIGhhc1NsYXNoRG90T3JEb3REb3QodXJsKSkgewotICAgICAg
ICBjaGFyIHN0YXRpY19wYXRoX2J1ZmZlcls0MDk2XTsKLSAgICAgICAgY2hhciAqcGF0aF9idWZm
ZXI7Ci0gICAgICAgIHVpbnQgcGF0aEJ1ZmZlckxlbmd0aCA9IHBhdGhFbmQgLSBwYXRoU3RhcnQg
KyAxOwotICAgICAgICBpZiAocGF0aEJ1ZmZlckxlbmd0aCA8PSBzaXplb2Yoc3RhdGljX3BhdGhf
YnVmZmVyKSkgewotICAgICAgICAgICAgcGF0aF9idWZmZXIgPSBzdGF0aWNfcGF0aF9idWZmZXI7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwYXRoX2J1ZmZlciA9IChjaGFyICopZmFz
dE1hbGxvYyhwYXRoQnVmZmVyTGVuZ3RoKTsKLSAgICAgICAgfQorICAgICAgICBWZWN0b3I8Y2hh
ciwgNDA5Nj4gcGF0aF9idWZmZXIocGF0aEVuZCAtIHBhdGhTdGFydCArIDEpOwogICAgICAgICBj
b3B5UGF0aFJlbW92aW5nRG90cyhwYXRoX2J1ZmZlciwgdXJsLCBwYXRoU3RhcnQsIHBhdGhFbmQp
OwogICAgICAgICBhcHBlbmRFc2NhcGluZ0JhZENoYXJzKHAsIHBhdGhfYnVmZmVyLCBzdHJsZW4o
cGF0aF9idWZmZXIpKTsKLSAgICAgICAgaWYgKHBhdGhfYnVmZmVyICE9IHN0YXRpY19wYXRoX2J1
ZmZlcikgewotICAgICAgICAgICAgZmFzdEZyZWUocGF0aF9idWZmZXIpOwotICAgICAgICB9Ci0g
ICAgfQotICAgIGVsc2UgeworICAgIH0gZWxzZQogICAgICAgICBhcHBlbmRFc2NhcGluZ0JhZENo
YXJzKHAsIHVybCArIHBhdGhTdGFydCwgcGF0aEVuZCAtIHBhdGhTdGFydCk7Ci0gICAgfQorCiAg
ICAgcGF0aEVuZFBvcyA9IHAgLSBidWZmZXI7CiAgICAgCiAgICAgCkBAIC0xMzE3LDExICsxMjM1
LDcgQEAgdm9pZCBLVVJMOjpwYXJzZShjb25zdCBjaGFyICp1cmwsIGNvbnN0IAogICAgICAgICB1
cmxTdHJpbmcgPSBRU3RyaW5nKGJ1ZmZlciwgZnJhZ21lbnRFbmRQb3MpOwogICAgIH0KIAotICAg
IEFTU0VSVChwIC0gYnVmZmVyIDw9IChpbnQpYnVmZmVyTGVuZ3RoKTsKLSAgICAgICAgICAgICAg
ICAKLSAgICBpZiAoYnVmZmVyICE9IHN0YXRpY0J1ZmZlcikgewotICAgICAgICBmYXN0RnJlZShi
dWZmZXIpOwotICAgIH0KKyAgICBBU1NFUlQocCAtIGJ1ZmZlciA8PSAoaW50KWJ1ZmZlci5zaXpl
KCkpOwogfQogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgS1VSTCAmYSwgY29uc3QgS1VSTCAmYikK
QEAgLTEzNDUsMTUgKzEyNTksNyBAQCBRU3RyaW5nIEtVUkw6OmVuY29kZV9zdHJpbmcoY29uc3Qg
UVN0cmluCiB7CiAgICAgUUNTdHJpbmcgYXNVVEY4ID0gbm90RW5jb2RlZFN0cmluZy51dGY4KCk7
CiAgICAgCi0gICAgY2hhciBzdGF0aWNCdWZmZXJbNDA5Nl07Ci0gICAgY2hhciAqYnVmZmVyOwot
ICAgIHVpbnQgYnVmZmVyTGVuZ3RoID0gYXNVVEY4Lmxlbmd0aCgpICogMyArIDE7Ci0gICAgaWYg
KGJ1ZmZlckxlbmd0aCA8PSBzaXplb2Yoc3RhdGljQnVmZmVyKSkgewotICAgICAgICBidWZmZXIg
PSBzdGF0aWNCdWZmZXI7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgYnVmZmVyID0gKGNoYXIgKilm
YXN0TWFsbG9jKGJ1ZmZlckxlbmd0aCk7Ci0gICAgfQotICAgIAorICAgIFZlY3RvcjxjaGFyLCA0
MDk2PiBidWZmZXIoYXNVVEY4Lmxlbmd0aCgpICogMyArIDEpOwogICAgIGNoYXIgKnAgPSBidWZm
ZXI7CiAKICAgICBjb25zdCBjaGFyICpzdHIgPSBhc1VURjg7CkBAIC0xMzcxLDExICsxMjc3LDcg
QEAgUVN0cmluZyBLVVJMOjplbmNvZGVfc3RyaW5nKGNvbnN0IFFTdHJpbgogICAgIAogICAgIFFT
dHJpbmcgcmVzdWx0KGJ1ZmZlciwgcCAtIGJ1ZmZlcik7CiAgICAgCi0gICAgQVNTRVJUKHAgLSBi
dWZmZXIgPD0gKGludClidWZmZXJMZW5ndGgpOwotICAgICAgICAgICAgICAgIAotICAgIGlmIChi
dWZmZXIgIT0gc3RhdGljQnVmZmVyKSB7Ci0gICAgICAgIGZhc3RGcmVlKGJ1ZmZlcik7Ci0gICAg
fQorICAgIEFTU0VSVChwIC0gYnVmZmVyIDw9IChpbnQpYnVmZmVyLnNpemUoKSk7CiAKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQpAQCAtMTQxOCwxMyArMTMyMCwxMyBAQCBzdGF0aWMgUVN0cmluZyBl
bmNvZGVIb3N0bmFtZShjb25zdCBRU3RyCiAgICAgcmV0dXJuIFFTdHJpbmcocmVpbnRlcnByZXRf
Y2FzdDxRQ2hhciAqPihidWZmZXIpLCBudW1DaGFyYWN0ZXJzQ29udmVydGVkKTsKIH0KIAotc3Rh
dGljIEFycmF5PEtXUUludGVnZXJQYWlyPiBmaW5kSG9zdG5hbWVzSW5NYWlsVG9VUkwoY29uc3Qg
UVN0cmluZyAmcykKK3N0YXRpYyBWZWN0b3I8cGFpcjxpbnQsIGludD4gPiBmaW5kSG9zdG5hbWVz
SW5NYWlsVG9VUkwoY29uc3QgUVN0cmluZyAmcykKIHsKICAgICAvLyBJbiBhIG1haWx0bzogVVJM
LCBob3N0IG5hbWVzIGNvbWUgYWZ0ZXIgYSAnQCcgY2hhcmFjdGVyIGFuZCBlbmQgd2l0aCBhICc+
JyBvciAnLCcgb3IgJz8nIG9yIGVuZCBvZiBzdHJpbmcgY2hhcmFjdGVyLgogICAgIC8vIFNraXAg
cXVvdGVkIHN0cmluZ3Mgc28gdGhhdCBjaGFyYWN0ZXJzIGluIHRoZW0gZG9uJ3QgY29uZnVzZSB1
cy4KICAgICAvLyBXaGVuIHdlIGZpbmQgYSAnPycgY2hhcmFjdGVyLCB3ZSBhcmUgcGFzdCB0aGUg
cGFydCBvZiB0aGUgVVJMIHRoYXQgY29udGFpbnMgaG9zdCBuYW1lcy4KIAotICAgIEFycmF5PEtX
UUludGVnZXJQYWlyPiBhOworICAgIFZlY3RvcjxwYWlyPGludCwgaW50PiA+IGE7CiAKICAgICBp
bnQgcCA9IDA7CiAgICAgd2hpbGUgKDEpIHsKQEAgLTE0NTMsMzQgKzEzNTUsMzAgQEAgc3RhdGlj
IEFycmF5PEtXUUludGVnZXJQYWlyPiBmaW5kSG9zdG5hbQogICAgICAgICAgICAgICAgIGRvbmUg
PSBmYWxzZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaW50IGkgPSBhLnNpemUoKTsK
LSAgICAgICAgICAgIGEucmVzaXplKGkgKyAxKTsKLSAgICAgICAgICAgIGFbaV0gPSBLV1FJbnRl
Z2VyUGFpcihob3N0bmFtZVN0YXJ0LCBob3N0bmFtZUVuZCk7CisgICAgICAgICAgICBhLmFwcGVu
ZChtYWtlX3BhaXIoaG9zdG5hbWVTdGFydCwgaG9zdG5hbWVFbmQpKTsKIAotICAgICAgICAgICAg
aWYgKGRvbmUpIHsKKyAgICAgICAgICAgIGlmIChkb25lKQogICAgICAgICAgICAgICAgIHJldHVy
biBhOwotICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gU2tp
cCBxdW90ZWQgc3RyaW5nLgogICAgICAgICAgICAgQVNTRVJUKGMgPT0gJyInKTsKICAgICAgICAg
ICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgICAgaW50IGVzY2FwZWRDaGFyYWN0ZXJPclN0
cmluZ0VuZCA9IHMuZmluZChRUmVnRXhwKCJbXCJcXF0iKSwgcCk7Ci0gICAgICAgICAgICAgICAg
aWYgKGVzY2FwZWRDaGFyYWN0ZXJPclN0cmluZ0VuZCA9PSAtMSkgeworICAgICAgICAgICAgICAg
IGlmIChlc2NhcGVkQ2hhcmFjdGVyT3JTdHJpbmdFbmQgPT0gLTEpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBhOwotICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGMgPSBz
W2VzY2FwZWRDaGFyYWN0ZXJPclN0cmluZ0VuZF07CiAgICAgICAgICAgICAgICAgcCA9IGVzY2Fw
ZWRDaGFyYWN0ZXJPclN0cmluZ0VuZCArIDE7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgLy8gSWYgd2UgYXJlIHRoZSBlbmQgb2YgdGhlIHN0cmluZywgdGhlbiBicmVhayBmcm9t
IHRoZSBzdHJpbmcgbG9vcCBiYWNrIHRvIHRoZSBob3N0IG5hbWUgbG9vcC4KLSAgICAgICAgICAg
ICAgICBpZiAoYyA9PSAnIicpIHsKKyAgICAgICAgICAgICAgICBpZiAoYyA9PSAnIicpCiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAvLyBTa2lwIGVzY2FwZWQgY2hhcmFjdGVyLgogICAgICAgICAg
ICAgICAgIEFTU0VSVChjID09ICdcXCcpOwotICAgICAgICAgICAgICAgIGlmIChwID09IHN0YXRp
Y19jYXN0PGludD4ocy5sZW5ndGgoKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAocCA9PSBzdGF0
aWNfY2FzdDxpbnQ+KHMubGVuZ3RoKCkpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gYTsK
LSAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIAorCiAgICAgICAgICAgICAgICAgKytw
OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNTM5LDE2ICsxNDM3LDE2IEBAIHN0YXRp
YyBib29sIGZpbmRIb3N0bmFtZUluSGllcmFyY2hpY2FsVVIKIHN0YXRpYyBRU3RyaW5nIGVuY29k
ZUhvc3RuYW1lcyhjb25zdCBRU3RyaW5nICZzKQogewogICAgIGlmIChzLnN0YXJ0c1dpdGgoIm1h
aWx0bzoiLCBmYWxzZSkpIHsKLSAgICAgICAgY29uc3QgQXJyYXk8S1dRSW50ZWdlclBhaXI+IGhv
c3RuYW1lUmFuZ2VzID0gZmluZEhvc3RuYW1lc0luTWFpbFRvVVJMKHMpOwotICAgICAgICB1aW50
IG4gPSBob3N0bmFtZVJhbmdlcy5zaXplKCk7CisgICAgICAgIGNvbnN0IFZlY3RvcjxwYWlyPGlu
dCwgaW50PiA+IGhvc3RuYW1lUmFuZ2VzID0gZmluZEhvc3RuYW1lc0luTWFpbFRvVVJMKHMpOwor
ICAgICAgICBpbnQgbiA9IGhvc3RuYW1lUmFuZ2VzLnNpemUoKTsKICAgICAgICAgaWYgKG4gIT0g
MCkgewogICAgICAgICAgICAgUVN0cmluZyByZXN1bHQ7CiAgICAgICAgICAgICB1aW50IHAgPSAw
OwotICAgICAgICAgICAgZm9yICh1aW50IGkgPSAwOyBpIDwgbjsgKytpKSB7Ci0gICAgICAgICAg
ICAgICAgY29uc3QgS1dRSW50ZWdlclBhaXIgJnIgPSBob3N0bmFtZVJhbmdlc1tpXTsKLSAgICAg
ICAgICAgICAgICByZXN1bHQgKz0gcy5taWQocCwgci5zdGFydCk7Ci0gICAgICAgICAgICAgICAg
cmVzdWx0ICs9IGVuY29kZUhvc3RuYW1lKHMubWlkKHIuc3RhcnQsIHIuZW5kIC0gci5zdGFydCkp
OwotICAgICAgICAgICAgICAgIHAgPSByLmVuZDsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgbjsgKytpKSB7CisgICAgICAgICAgICAgICAgY29uc3QgcGFpcjxpbnQsIGludD4gJnIg
PSBob3N0bmFtZVJhbmdlc1tpXTsKKyAgICAgICAgICAgICAgICByZXN1bHQgKz0gcy5taWQocCwg
ci5maXJzdCk7CisgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGVuY29kZUhvc3RuYW1lKHMubWlk
KHIuZmlyc3QsIHIuc2Vjb25kIC0gci5maXJzdCkpOworICAgICAgICAgICAgICAgIHAgPSByLnNl
Y29uZDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJlc3VsdCArPSBzLm1pZChwKTsKICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7Cg==
</data>
<flag name="review"
          id="1454"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>