<?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>20671</bug_id>
          
          <creation_ts>2008-09-05 12:28:46 -0700</creation_ts>
          <short_desc>JavaScriptCore string manipulation spends too much time in memcpy</short_desc>
          <delta_ts>2008-09-05 14:51:39 -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>Mac</rep_platform>
          <op_sys>OS X 10.5</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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>90291</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-09-05 12:28:46 -0700</bug_when>
    <thetext>I was poking around and discovered that we spent so much time in memcpy that doing a little micro-optimization will help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90292</commentid>
    <comment_count>1</comment_count>
      <attachid>23198</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-09-05 12:34:53 -0700</bug_when>
    <thetext>Created attachment 23198
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90306</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-09-05 14:51:39 -0700</bug_when>
    <thetext>Committed revision 36117.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23198</attachid>
            <date>2008-09-05 12:34:53 -0700</date>
            <delta_ts>2008-09-05 14:32:46 -0700</delta_ts>
            <desc>patch</desc>
            <filename>StringCopyPatch.txt</filename>
            <type>text/plain</type>
            <size>12001</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM2MTE1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMDgtMDktMDUgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIC0gZml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDY3MQorICAgICAgICAgIEphdmFTY3JpcHRDb3JlIHN0cmluZyBtYW5pcHVsYXRpb24g
c3BlbmRzIHRvbyBtdWNoIHRpbWUgaW4gbWVtY3B5CisKKyAgICAgICAgMS4wMTF4IGFzIGZhc3Qg
b24gU3VuU3BpZGVyIG92ZXJhbGwKKyAgICAgICAgMS4wMjh4IGFzIGZhc3Qgb24gU3VuU3BpZGVy
IHN0cmluZyB0ZXN0cworCisgICAgICAgIEZvciBzbWFsbCBzdHJpbmdzLCB1c2UgYSBsb29wIHJh
dGhlciB0aGFuIGNhbGxpbmcgbWVtY3B5LiBUaGUgbG9vcCBjYW4KKyAgICAgICAgYmUgZmFzdGVy
IGJlY2F1c2UgdGhlcmUncyBubyBmdW5jdGlvbiBjYWxsIG92ZXJoZWFkLCBhbmQgYmVjYXVzZSBp
dCBjYW4KKyAgICAgICAgYXNzdW1lIHRoZSBwb2ludGVycyBhcmUgYWxpZ25lZCBpbnN0ZWFkIG9m
IGNoZWNraW5nIHRoYXQuIEN1cnJlbnRseSB0aGUKKyAgICAgICAgdGhyZXNob2xkIGlzIHNldCBh
dCAyMCBjaGFyYWN0ZXJzLCBiYXNlZCBvbiBzb21lIHRlc3Rpbmcgb24gb25lIHBhcnRpY3VsYXIK
KyAgICAgICAgY29tcHV0ZXIuIExhdGVyIHdlIGNhbiB0dW5lIHRoaXMgZm9yIHZhcmlvdXMgcGxh
dGZvcm1zIGJ5IHNldHRpbmcKKyAgICAgICAgVVNUUklOR19DT1BZX0NIQVJTX0lOTElORV9DVVRP
RkYgYXBwcm9wcmlhdGVseSwgYnV0IGl0IGRvZXMgbm8gZ3JlYXQgaGFybQorICAgICAgICBpZiBu
b3QgcGVyZmVjdGx5IHR1bmVkLgorCisgICAgICAgICoga2pzL3VzdHJpbmcuY3BwOgorICAgICAg
ICAoS0pTOjpvdmVyZmxvd0luZGljYXRvcik6IFJlbW92ZWQgYm9ndXMgY29uc3QuCisgICAgICAg
IChLSlM6Om1heFVDaGFycyk6IERpdHRvLgorICAgICAgICAoS0pTOjpjb3B5Q2hhcnMpOiBBZGRl
ZC4KKyAgICAgICAgKEtKUzo6VVN0cmluZzo6UmVwOjpjcmVhdGVDb3B5aW5nKTogQ2FsbCBjb3B5
Q2hhcnMgaW5zdGVhZCBvZiBtZW1jcHkuCisgICAgICAgIEFsc28gZWxpbWluYXRlZCBuZWVkIGZv
ciBjb25zdF9jYXN0LgorICAgICAgICAoS0pTOjpVU3RyaW5nOjpleHBhbmRQcmVDYXBhY2l0eSk6
IERpdHRvLgorICAgICAgICAoS0pTOjpjb25jYXRlbmF0ZSk6IERpdHRvLgorICAgICAgICAoS0pT
OjpVU3RyaW5nOjpzcGxpY2VTdWJzdHJpbmdzV2l0aFNlcGFyYXRvcnMpOiBEaXR0by4KKyAgICAg
ICAgKEtKUzo6VVN0cmluZzo6YXBwZW5kKTogRGl0dG8uCisKIDIwMDgtMDktMDUgIEtldmluIE1j
Q3VsbG91Z2ggIDxrbWNjdWxsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
U2FtIGFuZCBBbGV4ZXkuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvdXN0cmluZy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL3VzdHJpbmcuY3BwCShyZXZpc2lvbiAzNjEx
MykKKysrIEphdmFTY3JpcHRDb3JlL2tqcy91c3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTEsMTMgKzUxLDE4IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiB1c2luZyBuYW1lc3BhY2UgV1RG
OjpVbmljb2RlOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAotbmFtZXNwYWNlIEtKUyB7CisvLyBU
aGlzIGNhbiBiZSB0dW5lZCBkaWZmZXJlbnRseSBwZXIgcGxhdGZvcm0gYnkgcHV0dGluZyBwbGF0
Zm9ybSAjaWZzIHJpZ2h0IGhlcmUuCisvLyBJZiB5b3UgZG9uJ3QgZGVmaW5lIHRoaXMgbWFjcm8g
YXQgYWxsLCB0aGVuIGNvcHlDaGFycyB3aWxsIGp1c3QgY2FsbCBkaXJlY3RseQorLy8gdG8gbWVt
Y3B5LgorI2RlZmluZSBVU1RSSU5HX0NPUFlfQ0hBUlNfSU5MSU5FX0NVVE9GRiAyMAogCituYW1l
c3BhY2UgS0pTIHsKKyAKIGV4dGVybiBjb25zdCBkb3VibGUgTmFOOwogZXh0ZXJuIGNvbnN0IGRv
dWJsZSBJbmY7CiAKLXN0YXRpYyBpbmxpbmUgY29uc3Qgc2l6ZV90IG92ZXJmbG93SW5kaWNhdG9y
KCkgeyByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsgfQotc3RhdGlj
IGlubGluZSBjb25zdCBzaXplX3QgbWF4VUNoYXJzKCkgeyByZXR1cm4gc3RkOjpudW1lcmljX2xp
bWl0czxzaXplX3Q+OjptYXgoKSAvIHNpemVvZihVQ2hhcik7IH0KK3N0YXRpYyBpbmxpbmUgc2l6
ZV90IG92ZXJmbG93SW5kaWNhdG9yKCkgeyByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxzaXpl
X3Q+OjptYXgoKTsgfQorc3RhdGljIGlubGluZSBzaXplX3QgbWF4VUNoYXJzKCkgeyByZXR1cm4g
c3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAvIHNpemVvZihVQ2hhcik7IH0KIAog
c3RhdGljIGlubGluZSBVQ2hhciogYWxsb2NDaGFycyhzaXplX3QgbGVuZ3RoKQogewpAQCAtNzUs
NiArODAsMTggQEAgc3RhdGljIGlubGluZSBVQ2hhciogcmVhbGxvY0NoYXJzKFVDaGFyKgogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxVQ2hhcio+KHRyeUZhc3RSZWFsbG9jKGJ1ZmZlciwgc2l6ZW9m
KFVDaGFyKSAqIGxlbmd0aCkpOwogfQogCitzdGF0aWMgaW5saW5lIHZvaWQgY29weUNoYXJzKFVD
aGFyKiBkZXN0aW5hdGlvbiwgY29uc3QgVUNoYXIqIHNvdXJjZSwgdW5zaWduZWQgbnVtQ2hhcmFj
dGVycykKK3sKKyNpZmRlZiBVU1RSSU5HX0NPUFlfQ0hBUlNfSU5MSU5FX0NVVE9GRgorICAgIGlm
IChudW1DaGFyYWN0ZXJzIDw9IFVTVFJJTkdfQ09QWV9DSEFSU19JTkxJTkVfQ1VUT0ZGKSB7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1DaGFyYWN0ZXJzOyArK2kpCisgICAg
ICAgICAgICBkZXN0aW5hdGlvbltpXSA9IHNvdXJjZVtpXTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyNlbmRpZgorICAgIG1lbWNweShkZXN0aW5hdGlvbiwgc291cmNlLCBudW1DaGFyYWN0ZXJz
ICogc2l6ZW9mKFVDaGFyKSk7Cit9CisKIENPTVBJTEVfQVNTRVJUKHNpemVvZihVQ2hhcikgPT0g
MiwgdWNoYXJfaXNfMl9ieXRlcykKIAogQ1N0cmluZzo6Q1N0cmluZyhjb25zdCBjaGFyKiBjKQpA
QCAtMTc2LDEwICsxOTMsOCBAQCBzdGF0aWMgY2hhciogc3RhdEJ1ZmZlciA9IDA7IC8vIE9ubHkg
dXNlCiAKIFBhc3NSZWZQdHI8VVN0cmluZzo6UmVwPiBVU3RyaW5nOjpSZXA6OmNyZWF0ZUNvcHlp
bmcoY29uc3QgVUNoYXIqIGQsIGludCBsKQogewotICAgIGludCBzaXplSW5CeXRlcyA9IGwgKiBz
aXplb2YoVUNoYXIpOwotICAgIFVDaGFyKiBjb3B5RCA9IHN0YXRpY19jYXN0PFVDaGFyKj4oZmFz
dE1hbGxvYyhzaXplSW5CeXRlcykpOwotICAgIG1lbWNweShjb3B5RCwgZCwgc2l6ZUluQnl0ZXMp
OwotCisgICAgVUNoYXIqIGNvcHlEID0gc3RhdGljX2Nhc3Q8VUNoYXIqPihmYXN0TWFsbG9jKGwg
KiBzaXplb2YoVUNoYXIpKSk7CisgICAgY29weUNoYXJzKGNvcHlELCBkLCBsKTsKICAgICByZXR1
cm4gY3JlYXRlKGNvcHlELCBsKTsKIH0KIApAQCAtNDU3LDcgKzQ3Miw3IEBAIHZvaWQgVVN0cmlu
Zzo6ZXhwYW5kUHJlQ2FwYWNpdHkoaW50IHJlcXUKICAgICAgICAgICAgIG1ha2VOdWxsKCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgbWVtY3B5KG5ld0J1ZiArIGRl
bHRhLCByLT5idWYsIChyLT5jYXBhY2l0eSArIHItPnByZUNhcGFjaXR5KSAqIHNpemVvZihVQ2hh
cikpOworICAgICAgICBjb3B5Q2hhcnMobmV3QnVmICsgZGVsdGEsIHItPmJ1Ziwgci0+Y2FwYWNp
dHkgKyByLT5wcmVDYXBhY2l0eSk7CiAgICAgICAgIGZhc3RGcmVlKHItPmJ1Zik7CiAgICAgICAg
IHItPmJ1ZiA9IG5ld0J1ZjsKIApAQCAtNTU1LDcgKzU3MCw3IEBAIFBhc3NSZWZQdHI8VVN0cmlu
Zzo6UmVwPiBjb25jYXRlbmF0ZShVU3QKICAgICAgICAgeC5leHBhbmRDYXBhY2l0eShhT2Zmc2V0
ICsgbGVuZ3RoKTsKICAgICAgICAgaWYgKCFhLT5kYXRhKCkgfHwgIXguZGF0YSgpKQogICAgICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIG1lbWNweShhLT5kYXRhKCkgKyBhU2l6ZSwgYi0+ZGF0
YSgpLCBiU2l6ZSAqIHNpemVvZihVQ2hhcikpOworICAgICAgICBjb3B5Q2hhcnMoYS0+ZGF0YSgp
ICsgYVNpemUsIGItPmRhdGEoKSwgYlNpemUpOwogICAgICAgICBQYXNzUmVmUHRyPFVTdHJpbmc6
OlJlcD4gcmVzdWx0ID0gVVN0cmluZzo6UmVwOjpjcmVhdGUoYSwgMCwgbGVuZ3RoKTsKIAogICAg
ICAgICBhLT5jaGVja0NvbnNpc3RlbmN5KCk7CkBAIC01NjUsNyArNTgwLDcgQEAgUGFzc1JlZlB0
cjxVU3RyaW5nOjpSZXA+IGNvbmNhdGVuYXRlKFVTdAogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KIAotICAgIGlmICgtYk9mZnNldCA9PSBiLT5iYXNlU3RyaW5nLT51c2VkUHJlQ2FwYWNp
dHkgJiYgYlNpemUgPj0gbWluU2hhcmVTaXplICAmJiA0ICogYlNpemUgPj0gYVNpemUpIHsKKyAg
ICBpZiAoLWJPZmZzZXQgPT0gYi0+YmFzZVN0cmluZy0+dXNlZFByZUNhcGFjaXR5ICYmIGJTaXpl
ID49IG1pblNoYXJlU2l6ZSAmJiA0ICogYlNpemUgPj0gYVNpemUpIHsKICAgICAgICAgLy8gLSBi
IHJlYWNoZXMgdGhlIGJlZ2lubmluZyBvZiBpdHMgYnVmZmVyIHNvIGl0IHF1YWxpZmllcyBmb3Ig
c2hhcmVkIHByZXBlbmQKICAgICAgICAgLy8gLSBhbHNvLCBpdCdzIGF0IGxlYXN0IGEgcXVhcnRl
ciB0aGUgbGVuZ3RoIG9mIGEgLSBwcmVwZW5kaW5nIHRvIGEgbXVjaCBzaG9ydGVyCiAgICAgICAg
IC8vICAgc3RyaW5nIGRvZXMgbW9yZSBoYXJtIHRoYW4gZ29vZApAQCAtNTczLDcgKzU4OCw3IEBA
IFBhc3NSZWZQdHI8VVN0cmluZzo6UmVwPiBjb25jYXRlbmF0ZShVU3QKICAgICAgICAgeS5leHBh
bmRQcmVDYXBhY2l0eSgtYk9mZnNldCArIGFTaXplKTsKICAgICAgICAgaWYgKCFiLT5kYXRhKCkg
fHwgIXkuZGF0YSgpKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIG1lbWNweShiLT5k
YXRhKCkgLSBhU2l6ZSwgYS0+ZGF0YSgpLCBhU2l6ZSAqIHNpemVvZihVQ2hhcikpOworICAgICAg
ICBjb3B5Q2hhcnMoYi0+ZGF0YSgpIC0gYVNpemUsIGEtPmRhdGEoKSwgYVNpemUpOwogICAgICAg
ICBQYXNzUmVmUHRyPFVTdHJpbmc6OlJlcD4gcmVzdWx0ID0gVVN0cmluZzo6UmVwOjpjcmVhdGUo
YiwgLWFTaXplLCBsZW5ndGgpOwogCiAgICAgICAgIGEtPmNoZWNrQ29uc2lzdGVuY3koKTsKQEAg
LTU4OCw4ICs2MDMsOCBAQCBQYXNzUmVmUHRyPFVTdHJpbmc6OlJlcD4gY29uY2F0ZW5hdGUoVVN0
CiAgICAgVUNoYXIqIGQgPSBhbGxvY0NoYXJzKG5ld0NhcGFjaXR5KTsKICAgICBpZiAoIWQpCiAg
ICAgICAgIHJldHVybiAwOwotICAgIG1lbWNweShkLCBhLT5kYXRhKCksIGFTaXplICogc2l6ZW9m
KFVDaGFyKSk7Ci0gICAgbWVtY3B5KGQgKyBhU2l6ZSwgYi0+ZGF0YSgpLCBiU2l6ZSAqIHNpemVv
ZihVQ2hhcikpOworICAgIGNvcHlDaGFycyhkLCBhLT5kYXRhKCksIGFTaXplKTsKKyAgICBjb3B5
Q2hhcnMoZCArIGFTaXplLCBiLT5kYXRhKCksIGJTaXplKTsKICAgICBQYXNzUmVmUHRyPFVTdHJp
bmc6OlJlcD4gcmVzdWx0ID0gVVN0cmluZzo6UmVwOjpjcmVhdGUoZCwgbGVuZ3RoKTsKICAgICBy
ZXN1bHQtPmNhcGFjaXR5ID0gbmV3Q2FwYWNpdHk7CiAKQEAgLTc3OCwxMSArNzkzLDExIEBAIFVT
dHJpbmcgVVN0cmluZzo6c3BsaWNlU3Vic3RyaW5nc1dpdGhTZXAKICAgICBpbnQgYnVmZmVyUG9z
ID0gMDsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1heENvdW50OyBpKyspIHsKICAgICAgICAg
aWYgKGkgPCByYW5nZUNvdW50KSB7Ci0gICAgICAgICAgICBtZW1jcHkoYnVmZmVyICsgYnVmZmVy
UG9zLCBkYXRhKCkgKyBzdWJzdHJpbmdSYW5nZXNbaV0ucG9zaXRpb24sIHN1YnN0cmluZ1Jhbmdl
c1tpXS5sZW5ndGggKiBzaXplb2YoVUNoYXIpKTsKKyAgICAgICAgICAgIGNvcHlDaGFycyhidWZm
ZXIgKyBidWZmZXJQb3MsIGRhdGEoKSArIHN1YnN0cmluZ1Jhbmdlc1tpXS5wb3NpdGlvbiwgc3Vi
c3RyaW5nUmFuZ2VzW2ldLmxlbmd0aCk7CiAgICAgICAgICAgICBidWZmZXJQb3MgKz0gc3Vic3Ry
aW5nUmFuZ2VzW2ldLmxlbmd0aDsKICAgICAgICAgfQogICAgICAgICBpZiAoaSA8IHNlcGFyYXRv
ckNvdW50KSB7Ci0gICAgICAgICAgICBtZW1jcHkoYnVmZmVyICsgYnVmZmVyUG9zLCBzZXBhcmF0
b3JzW2ldLmRhdGEoKSwgc2VwYXJhdG9yc1tpXS5zaXplKCkgKiBzaXplb2YoVUNoYXIpKTsKKyAg
ICAgICAgICAgIGNvcHlDaGFycyhidWZmZXIgKyBidWZmZXJQb3MsIHNlcGFyYXRvcnNbaV0uZGF0
YSgpLCBzZXBhcmF0b3JzW2ldLnNpemUoKSk7CiAgICAgICAgICAgICBidWZmZXJQb3MgKz0gc2Vw
YXJhdG9yc1tpXS5zaXplKCk7CiAgICAgICAgIH0KICAgICB9CkBAIC04MTAsNyArODI1LDcgQEAg
VVN0cmluZyYgVVN0cmluZzo6YXBwZW5kKGNvbnN0IFVTdHJpbmcgJgogICAgICAgICAvLyB0aGlz
IGlzIGRpcmVjdCBhbmQgaGFzIHJlZmNvdW50IG9mIDEgKHNvIHdlIGNhbiBqdXN0IGFsdGVyIGl0
IGRpcmVjdGx5KQogICAgICAgICBleHBhbmRDYXBhY2l0eSh0aGlzT2Zmc2V0ICsgbGVuZ3RoKTsK
ICAgICAgICAgaWYgKGRhdGEoKSkgewotICAgICAgICAgICAgbWVtY3B5KGNvbnN0X2Nhc3Q8VUNo
YXIqPihkYXRhKCkgKyB0aGlzU2l6ZSksIHQuZGF0YSgpLCB0U2l6ZSAqIHNpemVvZihVQ2hhcikp
OworICAgICAgICAgICAgY29weUNoYXJzKG1fcmVwLT5kYXRhKCkgKyB0aGlzU2l6ZSwgdC5kYXRh
KCksIHRTaXplKTsKICAgICAgICAgICAgIG1fcmVwLT5sZW4gPSBsZW5ndGg7CiAgICAgICAgICAg
ICBtX3JlcC0+X2hhc2ggPSAwOwogICAgICAgICB9CkBAIC04MTgsNyArODMzLDcgQEAgVVN0cmlu
ZyYgVVN0cmluZzo6YXBwZW5kKGNvbnN0IFVTdHJpbmcgJgogICAgICAgICAvLyB0aGlzIHJlYWNo
ZXMgdGhlIGVuZCBvZiB0aGUgYnVmZmVyIC0gZXh0ZW5kIGl0IGlmIGl0J3MgbG9uZyBlbm91Z2gg
dG8gYXBwZW5kIHRvCiAgICAgICAgIGV4cGFuZENhcGFjaXR5KHRoaXNPZmZzZXQgKyBsZW5ndGgp
OwogICAgICAgICBpZiAoZGF0YSgpKSB7Ci0gICAgICAgICAgICBtZW1jcHkoY29uc3RfY2FzdDxV
Q2hhcio+KGRhdGEoKSArIHRoaXNTaXplKSwgdC5kYXRhKCksIHRTaXplICogc2l6ZW9mKFVDaGFy
KSk7CisgICAgICAgICAgICBjb3B5Q2hhcnMobV9yZXAtPmRhdGEoKSArIHRoaXNTaXplLCB0LmRh
dGEoKSwgdFNpemUpOwogICAgICAgICAgICAgbV9yZXAgPSBSZXA6OmNyZWF0ZShtX3JlcCwgMCwg
bGVuZ3RoKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CkBAIC04MjgsOCArODQzLDggQEAgVVN0
cmluZyYgVVN0cmluZzo6YXBwZW5kKGNvbnN0IFVTdHJpbmcgJgogICAgICAgICBpZiAoIWQpCiAg
ICAgICAgICAgICBtYWtlTnVsbCgpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1lbWNw
eShkLCBkYXRhKCksIHRoaXNTaXplICogc2l6ZW9mKFVDaGFyKSk7Ci0gICAgICAgICAgICBtZW1j
cHkoY29uc3RfY2FzdDxVQ2hhcio+KGQgKyB0aGlzU2l6ZSksIHQuZGF0YSgpLCB0U2l6ZSAqIHNp
emVvZihVQ2hhcikpOworICAgICAgICAgICAgY29weUNoYXJzKGQsIGRhdGEoKSwgdGhpc1NpemUp
OworICAgICAgICAgICAgY29weUNoYXJzKGQgKyB0aGlzU2l6ZSwgdC5kYXRhKCksIHRTaXplKTsK
ICAgICAgICAgICAgIG1fcmVwID0gUmVwOjpjcmVhdGUoZCwgbGVuZ3RoKTsKICAgICAgICAgICAg
IG1fcmVwLT5jYXBhY2l0eSA9IG5ld0NhcGFjaXR5OwogICAgICAgICB9CkBAIC04NTksNyArODc0
LDcgQEAgVVN0cmluZyYgVVN0cmluZzo6YXBwZW5kKGNvbnN0IFVDaGFyKiB0RAogICAgICAgICAv
LyB0aGlzIGlzIGRpcmVjdCBhbmQgaGFzIHJlZmNvdW50IG9mIDEgKHNvIHdlIGNhbiBqdXN0IGFs
dGVyIGl0IGRpcmVjdGx5KQogICAgICAgICBleHBhbmRDYXBhY2l0eSh0aGlzT2Zmc2V0ICsgbGVu
Z3RoKTsKICAgICAgICAgaWYgKGRhdGEoKSkgewotICAgICAgICAgICAgbWVtY3B5KGNvbnN0X2Nh
c3Q8VUNoYXIqPihkYXRhKCkgKyB0aGlzU2l6ZSksIHREYXRhLCB0U2l6ZSAqIHNpemVvZihVQ2hh
cikpOworICAgICAgICAgICAgY29weUNoYXJzKG1fcmVwLT5kYXRhKCkgKyB0aGlzU2l6ZSwgdERh
dGEsIHRTaXplKTsKICAgICAgICAgICAgIG1fcmVwLT5sZW4gPSBsZW5ndGg7CiAgICAgICAgICAg
ICBtX3JlcC0+X2hhc2ggPSAwOwogICAgICAgICB9CkBAIC04NjcsNyArODgyLDcgQEAgVVN0cmlu
ZyYgVVN0cmluZzo6YXBwZW5kKGNvbnN0IFVDaGFyKiB0RAogICAgICAgICAvLyB0aGlzIHJlYWNo
ZXMgdGhlIGVuZCBvZiB0aGUgYnVmZmVyIC0gZXh0ZW5kIGl0IGlmIGl0J3MgbG9uZyBlbm91Z2gg
dG8gYXBwZW5kIHRvCiAgICAgICAgIGV4cGFuZENhcGFjaXR5KHRoaXNPZmZzZXQgKyBsZW5ndGgp
OwogICAgICAgICBpZiAoZGF0YSgpKSB7Ci0gICAgICAgICAgICBtZW1jcHkoY29uc3RfY2FzdDxV
Q2hhcio+KGRhdGEoKSArIHRoaXNTaXplKSwgdERhdGEsIHRTaXplICogc2l6ZW9mKFVDaGFyKSk7
CisgICAgICAgICAgICBjb3B5Q2hhcnMobV9yZXAtPmRhdGEoKSArIHRoaXNTaXplLCB0RGF0YSwg
dFNpemUpOwogICAgICAgICAgICAgbV9yZXAgPSBSZXA6OmNyZWF0ZShtX3JlcCwgMCwgbGVuZ3Ro
KTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CkBAIC04NzcsOCArODkyLDggQEAgVVN0cmluZyYg
VVN0cmluZzo6YXBwZW5kKGNvbnN0IFVDaGFyKiB0RAogICAgICAgICBpZiAoIWQpCiAgICAgICAg
ICAgICBtYWtlTnVsbCgpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1lbWNweShkLCBk
YXRhKCksIHRoaXNTaXplICogc2l6ZW9mKFVDaGFyKSk7Ci0gICAgICAgICAgICBtZW1jcHkoY29u
c3RfY2FzdDxVQ2hhcio+KGQgKyB0aGlzU2l6ZSksIHREYXRhLCB0U2l6ZSAqIHNpemVvZihVQ2hh
cikpOworICAgICAgICAgICAgY29weUNoYXJzKGQsIGRhdGEoKSwgdGhpc1NpemUpOworICAgICAg
ICAgICAgY29weUNoYXJzKGQgKyB0aGlzU2l6ZSwgdERhdGEsIHRTaXplKTsKICAgICAgICAgICAg
IG1fcmVwID0gUmVwOjpjcmVhdGUoZCwgbGVuZ3RoKTsKICAgICAgICAgICAgIG1fcmVwLT5jYXBh
Y2l0eSA9IG5ld0NhcGFjaXR5OwogICAgICAgICB9CkBAIC05MDcsNyArOTIyLDcgQEAgVVN0cmlu
ZyYgVVN0cmluZzo6YXBwZW5kKGNvbnN0IGNoYXIqIHQpCiAgICAgfSBlbHNlIGlmIChtX3JlcC0+
YmFzZUlzU2VsZigpICYmIG1fcmVwLT5yYyA9PSAxKSB7CiAgICAgICAgIC8vIHRoaXMgaXMgZGly
ZWN0IGFuZCBoYXMgcmVmY291bnQgb2YgMSAoc28gd2UgY2FuIGp1c3QgYWx0ZXIgaXQgZGlyZWN0
bHkpCiAgICAgICAgIGV4cGFuZENhcGFjaXR5KHRoaXNPZmZzZXQgKyBsZW5ndGgpOwotICAgICAg
ICBVQ2hhciogZCA9IGNvbnN0X2Nhc3Q8VUNoYXIqPihkYXRhKCkpOworICAgICAgICBVQ2hhciog
ZCA9IG1fcmVwLT5kYXRhKCk7CiAgICAgICAgIGlmIChkKSB7CiAgICAgICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IHRTaXplOyArK2kpCiAgICAgICAgICAgICAgICAgZFt0aGlzU2l6ZSArIGld
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odFtpXSk7IC8vIHVzZSB1bnNpZ25lZCBjaGFy
IHRvIHplcm8tZXh0ZW5kIGluc3RlYWQgb2Ygc2lnbi1leHRlbmQKQEAgLTkxNyw3ICs5MzIsNyBA
QCBVU3RyaW5nJiBVU3RyaW5nOjphcHBlbmQoY29uc3QgY2hhciogdCkKICAgICB9IGVsc2UgaWYg
KHRoaXNPZmZzZXQgKyB0aGlzU2l6ZSA9PSB1c2VkQ2FwYWNpdHkoKSAmJiB0aGlzU2l6ZSA+PSBt
aW5TaGFyZVNpemUpIHsKICAgICAgICAgLy8gdGhpcyBzdHJpbmcgcmVhY2hlcyB0aGUgZW5kIG9m
IHRoZSBidWZmZXIgLSBleHRlbmQgaXQKICAgICAgICAgZXhwYW5kQ2FwYWNpdHkodGhpc09mZnNl
dCArIGxlbmd0aCk7Ci0gICAgICAgIFVDaGFyKiBkID0gY29uc3RfY2FzdDxVQ2hhcio+KGRhdGEo
KSk7CisgICAgICAgIFVDaGFyKiBkID0gbV9yZXAtPmRhdGEoKTsKICAgICAgICAgaWYgKGQpIHsK
ICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdFNpemU7ICsraSkKICAgICAgICAgICAg
ICAgICBkW3RoaXNTaXplICsgaV0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih0W2ldKTsg
Ly8gdXNlIHVuc2lnbmVkIGNoYXIgdG8gemVyby1leHRlbmQgaW5zdGVhZCBvZiBzaWduLWV4dGVu
ZApAQCAtOTMwLDcgKzk0NSw3IEBAIFVTdHJpbmcmIFVTdHJpbmc6OmFwcGVuZChjb25zdCBjaGFy
KiB0KQogICAgICAgICBpZiAoIWQpCiAgICAgICAgICAgICBtYWtlTnVsbCgpOwogICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIG1lbWNweShkLCBkYXRhKCksIHRoaXNTaXplICogc2l6ZW9mKFVD
aGFyKSk7CisgICAgICAgICAgICBjb3B5Q2hhcnMoZCwgZGF0YSgpLCB0aGlzU2l6ZSk7CiAgICAg
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRTaXplOyArK2kpCiAgICAgICAgICAgICAgICAg
ZFt0aGlzU2l6ZSArIGldID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odFtpXSk7IC8vIHVz
ZSB1bnNpZ25lZCBjaGFyIHRvIHplcm8tZXh0ZW5kIGluc3RlYWQgb2Ygc2lnbi1leHRlbmQKICAg
ICAgICAgICAgIG1fcmVwID0gUmVwOjpjcmVhdGUoZCwgbGVuZ3RoKTsKQEAgLTk2NSw3ICs5ODAs
NyBAQCBVU3RyaW5nJiBVU3RyaW5nOjphcHBlbmQoVUNoYXIgYykKICAgICB9IGVsc2UgaWYgKG1f
cmVwLT5iYXNlSXNTZWxmKCkgJiYgbV9yZXAtPnJjID09IDEpIHsKICAgICAgICAgLy8gdGhpcyBp
cyBkaXJlY3QgYW5kIGhhcyByZWZjb3VudCBvZiAxIChzbyB3ZSBjYW4ganVzdCBhbHRlciBpdCBk
aXJlY3RseSkKICAgICAgICAgZXhwYW5kQ2FwYWNpdHkodGhpc09mZnNldCArIGxlbmd0aCArIDEp
OwotICAgICAgICBVQ2hhciogZCA9IGNvbnN0X2Nhc3Q8VUNoYXIqPihkYXRhKCkpOworICAgICAg
ICBVQ2hhciogZCA9IG1fcmVwLT5kYXRhKCk7CiAgICAgICAgIGlmIChkKSB7CiAgICAgICAgICAg
ICBkW2xlbmd0aF0gPSBjOwogICAgICAgICAgICAgbV9yZXAtPmxlbiA9IGxlbmd0aCArIDE7CkBA
IC05NzQsNyArOTg5LDcgQEAgVVN0cmluZyYgVVN0cmluZzo6YXBwZW5kKFVDaGFyIGMpCiAgICAg
fSBlbHNlIGlmICh0aGlzT2Zmc2V0ICsgbGVuZ3RoID09IHVzZWRDYXBhY2l0eSgpICYmIGxlbmd0
aCA+PSBtaW5TaGFyZVNpemUpIHsKICAgICAgICAgLy8gdGhpcyByZWFjaGVzIHRoZSBlbmQgb2Yg
dGhlIHN0cmluZyAtIGV4dGVuZCBpdCBhbmQgc2hhcmUKICAgICAgICAgZXhwYW5kQ2FwYWNpdHko
dGhpc09mZnNldCArIGxlbmd0aCArIDEpOwotICAgICAgICBVQ2hhciogZCA9IGNvbnN0X2Nhc3Q8
VUNoYXIqPihkYXRhKCkpOworICAgICAgICBVQ2hhciogZCA9IG1fcmVwLT5kYXRhKCk7CiAgICAg
ICAgIGlmIChkKSB7CiAgICAgICAgICAgICBkW2xlbmd0aF0gPSBjOwogICAgICAgICAgICAgbV9y
ZXAgPSBSZXA6OmNyZWF0ZShtX3JlcCwgMCwgbGVuZ3RoICsgMSk7CkBAIC05ODYsNyArMTAwMSw3
IEBAIFVTdHJpbmcmIFVTdHJpbmc6OmFwcGVuZChVQ2hhciBjKQogICAgICAgICBpZiAoIWQpCiAg
ICAgICAgICAgICBtYWtlTnVsbCgpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1lbWNw
eShkLCBkYXRhKCksIGxlbmd0aCAqIHNpemVvZihVQ2hhcikpOworICAgICAgICAgICAgY29weUNo
YXJzKGQsIGRhdGEoKSwgbGVuZ3RoKTsKICAgICAgICAgICAgIGRbbGVuZ3RoXSA9IGM7CiAgICAg
ICAgICAgICBtX3JlcCA9IFJlcDo6Y3JlYXRlKGQsIGxlbmd0aCArIDEpOwogICAgICAgICAgICAg
bV9yZXAtPmNhcGFjaXR5ID0gbmV3Q2FwYWNpdHk7Cg==
</data>
<flag name="review"
          id="10324"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>