<?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>22341</bug_id>
          
          <creation_ts>2008-11-18 12:43:16 -0800</creation_ts>
          <short_desc>Text codecs should not use static data without locking</short_desc>
          <delta_ts>2008-11-19 09:58:14 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>99211</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-11-18 12:43:16 -0800</bug_when>
    <thetext>Text encoding machinery is used by KURL, and KURL is used by workers.

Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99212</commentid>
    <comment_count>1</comment_count>
      <attachid>25244</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-11-18 12:46:13 -0800</bug_when>
    <thetext>Created attachment 25244
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99213</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-11-18 12:49:02 -0800</bug_when>
    <thetext>P1, because I&apos;ve actually seen crashes because of this on Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99214</commentid>
    <comment_count>3</comment_count>
      <attachid>25244</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-18 12:59:36 -0800</bug_when>
    <thetext>Comment on attachment 25244
proposed patch

&gt; +    AtomicallyInitializedStatic(Mutex*, mutex = new Mutex);

I should have mentioned this long ago: Macros should use the all-capitals style. We should rename this one since we&apos;re using it more and more. At some point. Not this patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99302</commentid>
    <comment_count>4</comment_count>
      <attachid>25266</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-11-19 06:20:40 -0800</bug_when>
    <thetext>Created attachment 25266
now with more correctness built-in

The previous patch was wrong in two ways - first, it caused deadlocks in text encoding registry, and second, it&apos;s not really correct to move codecs between threads, even if protected with locks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99319</commentid>
    <comment_count>5</comment_count>
      <attachid>25266</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-19 09:26:00 -0800</bug_when>
    <thetext>Comment on attachment 25266
now with more correctness built-in

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99331</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-11-19 09:58:14 -0800</bug_when>
    <thetext>Committed revision 38597.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25244</attachid>
            <date>2008-11-18 12:46:13 -0800</date>
            <delta_ts>2008-11-19 06:20:40 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>TextEncodingLocks.txt</filename>
            <type>text/plain</type>
            <size>7541</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODU3MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMDgtMTEtMTggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM0MQorICAgICAgICBU
ZXh0IGNvZGVjcyBzaG91bGQgbm90IHVzZSBzdGF0aWMgZGF0YSB3aXRob3V0IGxvY2tpbmcKKwor
ICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnZlcnRlckNhY2hlTXV0ZXgpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjSUNV
OjpyZWxlYXNlSUNVQ29udmVydGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY0lDVTo6
Y3JlYXRlSUNVQ29udmVydGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGlu
Z1JlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kaW5nUmVnaXN0cnlNdXRleCk6
CisgICAgICAgIChXZWJDb3JlOjpidWlsZEJhc2VUZXh0Q29kZWNNYXBzKToKKyAgICAgICAgKFdl
YkNvcmU6Om5ld1RleHRDb2RlYyk6CisgICAgICAgIChXZWJDb3JlOjphdG9taWNDYW5vbmljYWxU
ZXh0RW5jb2RpbmdOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Om5vRXh0ZW5kZWRUZXh0RW5jb2Rp
bmdOYW1lVXNlZCk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRlckNhY2hlTXV0ZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dENvZGVjTWFjOjpyZWxlYXNlVEVDQ29udmVydGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRDb2RlY01hYzo6Y3JlYXRlVEVDQ29udmVydGVyKToKKyAgICAgICAgQWRkIHRoZSBu
ZWNlc3NhcnkgbG9ja3MuCisKIDIwMDgtMTEtMTggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3
ZWJraXQub3JnPgogCiAgICAgICAgIFdpbmRvd3MgYnVpbGQgZml4LgpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAJKHJldmlzaW9uIDM4NTY5KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlIDx1bmljb2RlL3VjbnZfY2IuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVGhy
ZWFkaW5nLmg+CiAKIHVzaW5nIHN0ZDo6YXV0b19wdHI7CiB1c2luZyBzdGQ6Om1pbjsKQEAgLTQy
LDYgKzQzLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3Qgc2l6ZV90IENvbnZlcnNp
b25CdWZmZXJTaXplID0gMTYzODQ7CiAKK3N0YXRpYyBNdXRleCYgY29udmVydGVyQ2FjaGVNdXRl
eCgpCit7CisgICAgQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljKE11dGV4KiwgbXV0ZXggPSBu
ZXcgTXV0ZXgpOworICAgIHJldHVybiAqbXV0ZXg7Cit9CisKIHN0YXRpYyBVQ29udmVydGVyKiBj
YWNoZWRDb252ZXJ0ZXJJQ1U7CiAKIHN0YXRpYyBhdXRvX3B0cjxUZXh0Q29kZWM+IG5ld1RleHRD
b2RlY0lDVShjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBjb25zdCB2b2lkKikKQEAgLTIw
MSw2ICsyMDgsNyBAQCBUZXh0Q29kZWNJQ1U6On5UZXh0Q29kZWNJQ1UoKQogdm9pZCBUZXh0Q29k
ZWNJQ1U6OnJlbGVhc2VJQ1VDb252ZXJ0ZXIoKSBjb25zdAogewogICAgIGlmIChtX2NvbnZlcnRl
cklDVSkgeworICAgICAgICBNdXRleExvY2tlciBsb2NrKGNvbnZlcnRlckNhY2hlTXV0ZXgoKSk7
CiAgICAgICAgIGlmIChjYWNoZWRDb252ZXJ0ZXJJQ1UpCiAgICAgICAgICAgICB1Y252X2Nsb3Nl
KGNhY2hlZENvbnZlcnRlcklDVSk7CiAgICAgICAgIGNhY2hlZENvbnZlcnRlcklDVSA9IG1fY29u
dmVydGVySUNVOwpAQCAtMjE3LDEzICsyMjUsMTcgQEAgdm9pZCBUZXh0Q29kZWNJQ1U6OmNyZWF0
ZUlDVUNvbnZlcnRlcigpIAogCiAgICAgVUVycm9yQ29kZSBlcnI7CiAKLSAgICBpZiAoY2FjaGVk
Q29udmVydGVySUNVKSB7Ci0gICAgICAgIGVyciA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgY29u
c3QgY2hhciogY2FjaGVkTmFtZSA9IHVjbnZfZ2V0TmFtZShjYWNoZWRDb252ZXJ0ZXJJQ1UsICZl
cnIpOwotICAgICAgICBpZiAoVV9TVUNDRVNTKGVycikgJiYgbV9lbmNvZGluZyA9PSBjYWNoZWRO
YW1lKSB7Ci0gICAgICAgICAgICBtX2NvbnZlcnRlcklDVSA9IGNhY2hlZENvbnZlcnRlcklDVTsK
LSAgICAgICAgICAgIGNhY2hlZENvbnZlcnRlcklDVSA9IDA7Ci0gICAgICAgICAgICByZXR1cm47
CisgICAgeworICAgICAgICBNdXRleExvY2tlciBsb2NrKGNvbnZlcnRlckNhY2hlTXV0ZXgoKSk7
CisKKyAgICAgICAgaWYgKGNhY2hlZENvbnZlcnRlcklDVSkgeworICAgICAgICAgICAgZXJyID0g
VV9aRVJPX0VSUk9SOworICAgICAgICAgICAgY29uc3QgY2hhciogY2FjaGVkTmFtZSA9IHVjbnZf
Z2V0TmFtZShjYWNoZWRDb252ZXJ0ZXJJQ1UsICZlcnIpOworICAgICAgICAgICAgaWYgKFVfU1VD
Q0VTUyhlcnIpICYmIG1fZW5jb2RpbmcgPT0gY2FjaGVkTmFtZSkgeworICAgICAgICAgICAgICAg
IG1fY29udmVydGVySUNVID0gY2FjaGVkQ29udmVydGVySUNVOworICAgICAgICAgICAgICAgIGNh
Y2hlZENvbnZlcnRlcklDVSA9IDA7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dEVuY29kaW5nUmVnaXN0cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAJKHJldmlzaW9uIDM4NTY5KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CisjaW5jbHVkZSA8d3Rm
L1RocmVhZGluZy5oPgogCiAjaWYgVVNFKElDVV9VTklDT0RFKQogI2luY2x1ZGUgIlRleHRDb2Rl
Y0lDVS5oIgpAQCAtMTEzLDYgKzExNCwxNSBAQCBzdHJ1Y3QgVGV4dENvZGVjRmFjdG9yeSB7CiB0
eXBlZGVmIEhhc2hNYXA8Y29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBUZXh0RW5jb2RpbmdOYW1l
SGFzaD4gVGV4dEVuY29kaW5nTmFtZU1hcDsKIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBjaGFyKiwg
VGV4dENvZGVjRmFjdG9yeT4gVGV4dENvZGVjTWFwOwogCitzdGF0aWMgTXV0ZXgmIGVuY29kaW5n
UmVnaXN0cnlNdXRleCgpCit7CisgICAgLy8gV2UgZG9uJ3QgaGF2ZSB0byB1c2UgQXRvbWljYWxs
eUluaXRpYWxpemVkU3RhdGljIGhlcmUgYmVjYXVzZQorICAgIC8vIHRoaXMgZnVuY3Rpb24gaXMg
Y2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCBmb3IgYW55IHBhZ2UgYmVmb3JlCisgICAgLy8gaXQg
aXMgdXNlZCBpbiB3b3JrZXIgdGhyZWFkcy4KKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE11dGV4
LCBtdXRleCwgKCkpOworICAgIHJldHVybiBtdXRleDsKK30KKwogc3RhdGljIFRleHRFbmNvZGlu
Z05hbWVNYXAqIHRleHRFbmNvZGluZ05hbWVNYXA7CiBzdGF0aWMgVGV4dENvZGVjTWFwKiB0ZXh0
Q29kZWNNYXA7CiBzdGF0aWMgYm9vbCBkaWRFeHRlbmRUZXh0Q29kZWNNYXBzOwpAQCAtMTYxLDYg
KzE3MSwxMCBAQCBzdGF0aWMgdm9pZCBhZGRUb1RleHRDb2RlY01hcChjb25zdCBjaGFyCiAKIHN0
YXRpYyB2b2lkIGJ1aWxkQmFzZVRleHRDb2RlY01hcHMoKQogeworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKCF0ZXh0Q29kZWNNYXApOworICAgIEFTU0VSVCghdGV4dEVu
Y29kaW5nTmFtZU1hcCk7CisKICAgICB0ZXh0Q29kZWNNYXAgPSBuZXcgVGV4dENvZGVjTWFwOwog
ICAgIHRleHRFbmNvZGluZ05hbWVNYXAgPSBuZXcgVGV4dEVuY29kaW5nTmFtZU1hcDsKIApAQCAt
MTk5LDYgKzIxMyw4IEBAIHN0YXRpYyB2b2lkIGV4dGVuZFRleHRDb2RlY01hcHMoKQogCiBzdGQ6
OmF1dG9fcHRyPFRleHRDb2RlYz4gbmV3VGV4dENvZGVjKGNvbnN0IFRleHRFbmNvZGluZyYgZW5j
b2RpbmcpCiB7CisgICAgTXV0ZXhMb2NrZXIgbG9jayhlbmNvZGluZ1JlZ2lzdHJ5TXV0ZXgoKSk7
CisKICAgICBBU1NFUlQodGV4dENvZGVjTWFwKTsKICAgICBUZXh0Q29kZWNGYWN0b3J5IGZhY3Rv
cnkgPSB0ZXh0Q29kZWNNYXAtPmdldChlbmNvZGluZy5uYW1lKCkpOwogICAgIEFTU0VSVChmYWN0
b3J5LmZ1bmN0aW9uKTsKQEAgLTIxMSw2ICsyMjcsOSBAQCBjb25zdCBjaGFyKiBhdG9taWNDYW5v
bmljYWxUZXh0RW5jb2RpbmdOCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmICghdGV4dEVuY29k
aW5nTmFtZU1hcCkKICAgICAgICAgYnVpbGRCYXNlVGV4dENvZGVjTWFwcygpOworCisgICAgTXV0
ZXhMb2NrZXIgbG9jayhlbmNvZGluZ1JlZ2lzdHJ5TXV0ZXgoKSk7CisKICAgICBpZiAoY29uc3Qg
Y2hhciogYXRvbWljTmFtZSA9IHRleHRFbmNvZGluZ05hbWVNYXAtPmdldChuYW1lKSkKICAgICAg
ICAgcmV0dXJuIGF0b21pY05hbWU7CiAgICAgaWYgKGRpZEV4dGVuZFRleHRDb2RlY01hcHMpCkBA
IC0yMzgsNiArMjU3LDcgQEAgY29uc3QgY2hhciogYXRvbWljQ2Fub25pY2FsVGV4dEVuY29kaW5n
TgogCiBib29sIG5vRXh0ZW5kZWRUZXh0RW5jb2RpbmdOYW1lVXNlZCgpCiB7CisgICAgLy8gSWYg
dGhlIGNhbGxpbmcgdGhyZWFkIGRpZCBub3QgdXNlIGV4dGVuZGVkIGVuY29kaW5nIG5hbWVzLCBp
dCBpcyBmaW5lIGZvciBpdCB0byB1c2UgYSBzdGFsZSBmYWxzZSB2YWx1ZS4KICAgICByZXR1cm4g
IWRpZEV4dGVuZFRleHRDb2RlY01hcHM7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vdGV4
dC9tYWMvVGV4dENvZGVjTWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvbWFjL1RleHRDb2RlY01hYy5jcHAJKHJldmlzaW9uIDM4NTY5KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiQ2hhcnNldERhdGEuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGlu
Zy5oPgogCiB1c2luZyBzdGQ6OmF1dG9fcHRyOwogdXNpbmcgc3RkOjptaW47CkBAIC00Myw2ICs0
NCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IHNpemVfdCBDb252ZXJzaW9uQnVm
ZmVyU2l6ZSA9IDE2Mzg0OwogCitzdGF0aWMgTXV0ZXgmIGNvbnZlcnRlckNhY2hlTXV0ZXgoKQor
eworICAgIEF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpYyhNdXRleCosIG11dGV4ID0gbmV3IE11
dGV4KTsKKyAgICByZXR1cm4gKm11dGV4OworfQorCiBzdGF0aWMgVEVDT2JqZWN0UmVmIGNhY2hl
ZENvbnZlcnRlclRFQzsKIHN0YXRpYyBURUNUZXh0RW5jb2RpbmdJRCBjYWNoZWRDb252ZXJ0ZXJF
bmNvZGluZyA9IGludmFsaWRFbmNvZGluZzsKIApAQCAtOTAsNiArOTcsOCBAQCBUZXh0Q29kZWNN
YWM6On5UZXh0Q29kZWNNYWMoKQogCiB2b2lkIFRleHRDb2RlY01hYzo6cmVsZWFzZVRFQ0NvbnZl
cnRlcigpIGNvbnN0CiB7CisgICAgTXV0ZXhMb2NrZXIgbG9jayhjb252ZXJ0ZXJDYWNoZU11dGV4
KCkpOworCiAgICAgaWYgKG1fY29udmVydGVyVEVDKSB7CiAgICAgICAgIGlmIChjYWNoZWRDb252
ZXJ0ZXJURUMgIT0gMCkKICAgICAgICAgICAgIFRFQ0Rpc3Bvc2VDb252ZXJ0ZXIoY2FjaGVkQ29u
dmVydGVyVEVDKTsKQEAgLTEwMSwyMiArMTEwLDI4IEBAIHZvaWQgVGV4dENvZGVjTWFjOjpyZWxl
YXNlVEVDQ29udmVydGVyKCkKIAogT1NTdGF0dXMgVGV4dENvZGVjTWFjOjpjcmVhdGVURUNDb252
ZXJ0ZXIoKSBjb25zdAogeworICAgIE11dGV4TG9ja2VyIGxvY2soY29udmVydGVyQ2FjaGVNdXRl
eCgpKTsKKwogICAgIGJvb2wgY2FjaGVkRW5jb2RpbmdFcXVhbCA9IGNhY2hlZENvbnZlcnRlckVu
Y29kaW5nID09IG1fZW5jb2Rpbmc7CiAgICAgY2FjaGVkQ29udmVydGVyRW5jb2RpbmcgPSBpbnZh
bGlkRW5jb2Rpbmc7CiAKICAgICBpZiAoY2FjaGVkRW5jb2RpbmdFcXVhbCAmJiBjYWNoZWRDb252
ZXJ0ZXJURUMpIHsKICAgICAgICAgbV9jb252ZXJ0ZXJURUMgPSBjYWNoZWRDb252ZXJ0ZXJURUM7
CiAgICAgICAgIGNhY2hlZENvbnZlcnRlclRFQyA9IDA7Ci0gICAgICAgIFRFQ0NsZWFyQ29udmVy
dGVyQ29udGV4dEluZm8obV9jb252ZXJ0ZXJURUMpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIE9T
U3RhdHVzIHN0YXR1cyA9IFRFQ0NyZWF0ZUNvbnZlcnRlcigmbV9jb252ZXJ0ZXJURUMsIG1fZW5j
b2RpbmcsCi0gICAgICAgICAgICBDcmVhdGVUZXh0RW5jb2Rpbmcoa1RleHRFbmNvZGluZ1VuaWNv
ZGVEZWZhdWx0LCBrVGV4dEVuY29kaW5nRGVmYXVsdFZhcmlhbnQsIGtVbmljb2RlMTZCaXRGb3Jt
YXQpKTsKLSAgICAgICAgaWYgKHN0YXR1cykKLSAgICAgICAgICAgIHJldHVybiBzdGF0dXM7CiAK
LSAgICAgICAgVEVDU2V0QmFzaWNPcHRpb25zKG1fY29udmVydGVyVEVDLCBrVW5pY29kZUZvcmNl
QVNDSUlSYW5nZU1hc2spOworICAgICAgICBsb2NrLnVubG9jaygpOworICAgICAgICBURUNDbGVh
ckNvbnZlcnRlckNvbnRleHRJbmZvKG1fY29udmVydGVyVEVDKTsKKyAgICAgICAgcmV0dXJuIG5v
RXJyOwogICAgIH0KLSAgICAKKworICAgIGxvY2sudW5sb2NrKCk7CisKKyAgICBPU1N0YXR1cyBz
dGF0dXMgPSBURUNDcmVhdGVDb252ZXJ0ZXIoJm1fY29udmVydGVyVEVDLCBtX2VuY29kaW5nLAor
ICAgICAgICBDcmVhdGVUZXh0RW5jb2Rpbmcoa1RleHRFbmNvZGluZ1VuaWNvZGVEZWZhdWx0LCBr
VGV4dEVuY29kaW5nRGVmYXVsdFZhcmlhbnQsIGtVbmljb2RlMTZCaXRGb3JtYXQpKTsKKyAgICBp
ZiAoc3RhdHVzKQorICAgICAgICByZXR1cm4gc3RhdHVzOworCisgICAgVEVDU2V0QmFzaWNPcHRp
b25zKG1fY29udmVydGVyVEVDLCBrVW5pY29kZUZvcmNlQVNDSUlSYW5nZU1hc2spOwogICAgIHJl
dHVybiBub0VycjsKIH0KIAo=
</data>
<flag name="review"
          id="11668"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25266</attachid>
            <date>2008-11-19 06:20:40 -0800</date>
            <delta_ts>2008-11-19 09:26:00 -0800</delta_ts>
            <desc>now with more correctness built-in</desc>
            <filename>TextEncodingLocks.txt</filename>
            <type>text/plain</type>
            <size>9235</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODU5MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMDgtMTEtMTkgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM0MQorICAgICAgICBU
ZXh0IGNvZGVjcyBzaG91bGQgbm90IHVzZSBzdGF0aWMgZGF0YSB3aXRob3V0IGxvY2tpbmcKKwor
ICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwOgorICAgICAgICBNYWRlIGNhY2hlZCBjb252
ZXJ0ZXJzIHBlci10aHJlYWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGlu
Z1JlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kaW5nUmVnaXN0cnlNdXRleCk6
IEFkZGVkIGEgbXV0ZXggZm9yIGNvZGVjIG1hcHMgYWNjZXNzLgorICAgICAgICAoV2ViQ29yZTo6
YWRkVG9UZXh0Q29kZWNNYXApOiBEb24ndCB1c2UgVGV4dEVuY29kaW5nIGp1c3QgdG8gY2Fjbm9u
aWNhbGl6ZSB0aGUgbmFtZSwgYXMgaXQKKyAgICAgICAgY2F1c2VzIGEgZGVkYWxvY2sgZHVlIHRv
IGEgcmVjdXJzaXZlIGNhbGwgaW50byByZWdpc3RyeS4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxk
QmFzZVRleHRDb2RlY01hcHMpOiBBZGRlZCBhc3NlcnRpb25zLgorICAgICAgICAoV2ViQ29yZTo6
bmV3VGV4dENvZGVjKTogVGFrZSBhIGxvY2sgdG8gYXZvaWQgY29uY3VycmVudCBhY2Nlc3MgdG8g
Y29kZWMgbWFwcy4KKyAgICAgICAgKFdlYkNvcmU6OmF0b21pY0Nhbm9uaWNhbFRleHRFbmNvZGlu
Z05hbWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Om5vRXh0ZW5kZWRUZXh0RW5jb2RpbmdO
YW1lVXNlZCk6IEFkZGVkIGEgY29tbWVudCwgZXhwbGFpbmluZyB3aHkgbG9ja2luZyBpcyBub3QK
KyAgICAgICAgbmVjZXNzYXJ5IGhlcmUuCisKIDIwMDgtMTEtMTggIERhbiBCZXJuc3RlaW4gIDxt
aXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJrIFJvd2UuCkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcAkocmV2aXNpb24gMzg1OTApCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQsNyArMzQsMTAgQEAKICNpbmNsdWRlIDx1bmljb2RlL3VjbnZfY2IuaD4KICNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KKyNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CiAKK3Vz
aW5nIG5hbWVzcGFjZSBXVEY7CiB1c2luZyBzdGQ6OmF1dG9fcHRyOwogdXNpbmcgc3RkOjptaW47
CiAKQEAgLTQyLDcgKzQ1LDIzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3Qgc2l6ZV90
IENvbnZlcnNpb25CdWZmZXJTaXplID0gMTYzODQ7CiAKLXN0YXRpYyBVQ29udmVydGVyKiBjYWNo
ZWRDb252ZXJ0ZXJJQ1U7CitzdHJ1Y3QgSUNVQ29udmVydGVyV3JhcHBlciB7CisgICAgSUNVQ29u
dmVydGVyV3JhcHBlcigpIDogY29udmVydGVyKDApIHsgfQorICAgIH5JQ1VDb252ZXJ0ZXJXcmFw
cGVyKCkgeyBpZiAoY29udmVydGVyKSB1Y252X2Nsb3NlKGNvbnZlcnRlcik7IH0KKworICAgIFVD
b252ZXJ0ZXIqIGNvbnZlcnRlcjsKK307CisKK3N0YXRpYyBVQ29udmVydGVyKiYgY2FjaGVkQ29u
dmVydGVySUNVKCkKK3sKKyNpZiBFTkFCTEUoV09SS0VSUykKKyAgICBBdG9taWNhbGx5SW5pdGlh
bGl6ZWRTdGF0aWMoVGhyZWFkU3BlY2lmaWM8SUNVQ29udmVydGVyV3JhcHBlcj4qLCBjYWNoZWRD
b252ZXJ0ZXIgPSBuZXcgVGhyZWFkU3BlY2lmaWM8SUNVQ29udmVydGVyV3JhcHBlcj4pOworICAg
IHJldHVybiAoKipjYWNoZWRDb252ZXJ0ZXIpLmNvbnZlcnRlcjsKKyNlbHNlCisgICAgc3RhdGlj
IFVDb252ZXJ0ZXIqIGNhY2hlZENvbnZlcnRlcjsKKyAgICByZXR1cm4gY2FjaGVkQ29udmVydGVy
OworI2VuZGlmCit9CiAKIHN0YXRpYyBhdXRvX3B0cjxUZXh0Q29kZWM+IG5ld1RleHRDb2RlY0lD
VShjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBjb25zdCB2b2lkKikKIHsKQEAgLTIwMSw5
ICsyMjAsMTAgQEAgVGV4dENvZGVjSUNVOjp+VGV4dENvZGVjSUNVKCkKIHZvaWQgVGV4dENvZGVj
SUNVOjpyZWxlYXNlSUNVQ29udmVydGVyKCkgY29uc3QKIHsKICAgICBpZiAobV9jb252ZXJ0ZXJJ
Q1UpIHsKLSAgICAgICAgaWYgKGNhY2hlZENvbnZlcnRlcklDVSkKLSAgICAgICAgICAgIHVjbnZf
Y2xvc2UoY2FjaGVkQ29udmVydGVySUNVKTsKLSAgICAgICAgY2FjaGVkQ29udmVydGVySUNVID0g
bV9jb252ZXJ0ZXJJQ1U7CisgICAgICAgIFVDb252ZXJ0ZXIqJiBjYWNoZWRDb252ZXJ0ZXIgPSBj
YWNoZWRDb252ZXJ0ZXJJQ1UoKTsKKyAgICAgICAgaWYgKGNhY2hlZENvbnZlcnRlcikKKyAgICAg
ICAgICAgIHVjbnZfY2xvc2UoY2FjaGVkQ29udmVydGVyKTsKKyAgICAgICAgY2FjaGVkQ29udmVy
dGVyID0gbV9jb252ZXJ0ZXJJQ1U7CiAgICAgICAgIG1fY29udmVydGVySUNVID0gMDsKICAgICB9
CiB9CkBAIC0yMTcsMTIgKzIzNywxMyBAQCB2b2lkIFRleHRDb2RlY0lDVTo6Y3JlYXRlSUNVQ29u
dmVydGVyKCkgCiAKICAgICBVRXJyb3JDb2RlIGVycjsKIAotICAgIGlmIChjYWNoZWRDb252ZXJ0
ZXJJQ1UpIHsKKyAgICBVQ29udmVydGVyKiYgY2FjaGVkQ29udmVydGVyID0gY2FjaGVkQ29udmVy
dGVySUNVKCk7CisgICAgaWYgKGNhY2hlZENvbnZlcnRlcikgewogICAgICAgICBlcnIgPSBVX1pF
Uk9fRVJST1I7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGNhY2hlZE5hbWUgPSB1Y252X2dldE5hbWUo
Y2FjaGVkQ29udmVydGVySUNVLCAmZXJyKTsKKyAgICAgICAgY29uc3QgY2hhciogY2FjaGVkTmFt
ZSA9IHVjbnZfZ2V0TmFtZShjYWNoZWRDb252ZXJ0ZXIsICZlcnIpOwogICAgICAgICBpZiAoVV9T
VUNDRVNTKGVycikgJiYgbV9lbmNvZGluZyA9PSBjYWNoZWROYW1lKSB7Ci0gICAgICAgICAgICBt
X2NvbnZlcnRlcklDVSA9IGNhY2hlZENvbnZlcnRlcklDVTsKLSAgICAgICAgICAgIGNhY2hlZENv
bnZlcnRlcklDVSA9IDA7CisgICAgICAgICAgICBtX2NvbnZlcnRlcklDVSA9IGNhY2hlZENvbnZl
cnRlcjsKKyAgICAgICAgICAgIGNhY2hlZENvbnZlcnRlciA9IDA7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVu
Y29kaW5nUmVnaXN0cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAJKHJldmlzaW9uIDM4NTkwKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMs
NyArMzMsOSBAQAogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CisjaW5jbHVkZSA8d3Rm
L1RocmVhZGluZy5oPgogCiAjaWYgVVNFKElDVV9VTklDT0RFKQogI2luY2x1ZGUgIlRleHRDb2Rl
Y0lDVS5oIgpAQCAtMTEzLDYgKzExNSwxNSBAQCBzdHJ1Y3QgVGV4dENvZGVjRmFjdG9yeSB7CiB0
eXBlZGVmIEhhc2hNYXA8Y29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBUZXh0RW5jb2RpbmdOYW1l
SGFzaD4gVGV4dEVuY29kaW5nTmFtZU1hcDsKIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBjaGFyKiwg
VGV4dENvZGVjRmFjdG9yeT4gVGV4dENvZGVjTWFwOwogCitzdGF0aWMgTXV0ZXgmIGVuY29kaW5n
UmVnaXN0cnlNdXRleCgpCit7CisgICAgLy8gV2UgZG9uJ3QgaGF2ZSB0byB1c2UgQXRvbWljYWxs
eUluaXRpYWxpemVkU3RhdGljIGhlcmUgYmVjYXVzZQorICAgIC8vIHRoaXMgZnVuY3Rpb24gaXMg
Y2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCBmb3IgYW55IHBhZ2UgYmVmb3JlCisgICAgLy8gaXQg
aXMgdXNlZCBpbiB3b3JrZXIgdGhyZWFkcy4KKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE11dGV4
LCBtdXRleCwgKCkpOworICAgIHJldHVybiBtdXRleDsKK30KKwogc3RhdGljIFRleHRFbmNvZGlu
Z05hbWVNYXAqIHRleHRFbmNvZGluZ05hbWVNYXA7CiBzdGF0aWMgVGV4dENvZGVjTWFwKiB0ZXh0
Q29kZWNNYXA7CiBzdGF0aWMgYm9vbCBkaWRFeHRlbmRUZXh0Q29kZWNNYXBzOwpAQCAtMTU0LDEz
ICsxNjUsMTcgQEAgc3RhdGljIHZvaWQgYWRkVG9UZXh0RW5jb2RpbmdOYW1lTWFwKGNvbgogCiBz
dGF0aWMgdm9pZCBhZGRUb1RleHRDb2RlY01hcChjb25zdCBjaGFyKiBuYW1lLCBOZXdUZXh0Q29k
ZWNGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3Qgdm9pZCogYWRkaXRpb25hbERhdGEpCiB7Ci0gICAg
VGV4dEVuY29kaW5nIGVuY29kaW5nKG5hbWUpOwotICAgIEFTU0VSVChlbmNvZGluZy5pc1ZhbGlk
KCkpOwotICAgIHRleHRDb2RlY01hcC0+YWRkKGVuY29kaW5nLm5hbWUoKSwgVGV4dENvZGVjRmFj
dG9yeShmdW5jdGlvbiwgYWRkaXRpb25hbERhdGEpKTsKKyAgICBjb25zdCBjaGFyKiBhdG9taWNO
YW1lID0gdGV4dEVuY29kaW5nTmFtZU1hcC0+Z2V0KG5hbWUpOworICAgIEFTU0VSVChhdG9taWNO
YW1lKTsKKyAgICB0ZXh0Q29kZWNNYXAtPmFkZChhdG9taWNOYW1lLCBUZXh0Q29kZWNGYWN0b3J5
KGZ1bmN0aW9uLCBhZGRpdGlvbmFsRGF0YSkpOwogfQogCiBzdGF0aWMgdm9pZCBidWlsZEJhc2VU
ZXh0Q29kZWNNYXBzKCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VS
VCghdGV4dENvZGVjTWFwKTsKKyAgICBBU1NFUlQoIXRleHRFbmNvZGluZ05hbWVNYXApOworCiAg
ICAgdGV4dENvZGVjTWFwID0gbmV3IFRleHRDb2RlY01hcDsKICAgICB0ZXh0RW5jb2RpbmdOYW1l
TWFwID0gbmV3IFRleHRFbmNvZGluZ05hbWVNYXA7CiAKQEAgLTE5OSw2ICsyMTQsOCBAQCBzdGF0
aWMgdm9pZCBleHRlbmRUZXh0Q29kZWNNYXBzKCkKIAogc3RkOjphdXRvX3B0cjxUZXh0Q29kZWM+
IG5ld1RleHRDb2RlYyhjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nKQogeworICAgIE11dGV4
TG9ja2VyIGxvY2soZW5jb2RpbmdSZWdpc3RyeU11dGV4KCkpOworCiAgICAgQVNTRVJUKHRleHRD
b2RlY01hcCk7CiAgICAgVGV4dENvZGVjRmFjdG9yeSBmYWN0b3J5ID0gdGV4dENvZGVjTWFwLT5n
ZXQoZW5jb2RpbmcubmFtZSgpKTsKICAgICBBU1NFUlQoZmFjdG9yeS5mdW5jdGlvbik7CkBAIC0y
MTEsNiArMjI4LDkgQEAgY29uc3QgY2hhciogYXRvbWljQ2Fub25pY2FsVGV4dEVuY29kaW5nTgog
ICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIXRleHRFbmNvZGluZ05hbWVNYXApCiAgICAgICAg
IGJ1aWxkQmFzZVRleHRDb2RlY01hcHMoKTsKKworICAgIE11dGV4TG9ja2VyIGxvY2soZW5jb2Rp
bmdSZWdpc3RyeU11dGV4KCkpOworCiAgICAgaWYgKGNvbnN0IGNoYXIqIGF0b21pY05hbWUgPSB0
ZXh0RW5jb2RpbmdOYW1lTWFwLT5nZXQobmFtZSkpCiAgICAgICAgIHJldHVybiBhdG9taWNOYW1l
OwogICAgIGlmIChkaWRFeHRlbmRUZXh0Q29kZWNNYXBzKQpAQCAtMjM4LDYgKzI1OCw3IEBAIGNv
bnN0IGNoYXIqIGF0b21pY0Nhbm9uaWNhbFRleHRFbmNvZGluZ04KIAogYm9vbCBub0V4dGVuZGVk
VGV4dEVuY29kaW5nTmFtZVVzZWQoKQogeworICAgIC8vIElmIHRoZSBjYWxsaW5nIHRocmVhZCBk
aWQgbm90IHVzZSBleHRlbmRlZCBlbmNvZGluZyBuYW1lcywgaXQgaXMgZmluZSBmb3IgaXQgdG8g
dXNlIGEgc3RhbGUgZmFsc2UgdmFsdWUuCiAgICAgcmV0dXJuICFkaWRFeHRlbmRUZXh0Q29kZWNN
YXBzOwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRDb2RlY01hYy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMu
Y3BwCShyZXZpc2lvbiAzODU5MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENv
ZGVjTWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsMTAgQEAKICNpbmNsdWRlICJD
aGFyc2V0RGF0YS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3Rm
L0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L1RocmVhZFNwZWNpZmljLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBXVEY7CiB1c2luZyBzdGQ6OmF1
dG9fcHRyOwogdXNpbmcgc3RkOjptaW47CiAKQEAgLTQzLDggKzQ2LDI0IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY29uc3Qgc2l6ZV90IENvbnZlcnNpb25CdWZmZXJTaXplID0gMTYzODQ7CiAK
LXN0YXRpYyBURUNPYmplY3RSZWYgY2FjaGVkQ29udmVydGVyVEVDOwotc3RhdGljIFRFQ1RleHRF
bmNvZGluZ0lEIGNhY2hlZENvbnZlcnRlckVuY29kaW5nID0gaW52YWxpZEVuY29kaW5nOworc3Ry
dWN0IFRFQ0NvbnZlcnRlcldyYXBwZXIgeworICAgIFRFQ0NvbnZlcnRlcldyYXBwZXIoKSA6IGNv
bnZlcnRlcigwKSwgZW5jb2RpbmcoaW52YWxpZEVuY29kaW5nKSB7IH0KKyAgICB+VEVDQ29udmVy
dGVyV3JhcHBlcigpIHsgaWYgKGNvbnZlcnRlcikgVEVDRGlzcG9zZUNvbnZlcnRlcihjb252ZXJ0
ZXIpOyB9CisKKyAgICBURUNPYmplY3RSZWYgY29udmVydGVyOworICAgIFRFQ1RleHRFbmNvZGlu
Z0lEIGVuY29kaW5nOworfTsKKworc3RhdGljIFRFQ0NvbnZlcnRlcldyYXBwZXImIGNhY2hlZENv
bnZlcnRlclRFQygpCit7CisjaWYgRU5BQkxFKFdPUktFUlMpCisgICAgQXRvbWljYWxseUluaXRp
YWxpemVkU3RhdGljKFRocmVhZFNwZWNpZmljPFRFQ0NvbnZlcnRlcldyYXBwZXI+KiwgY2FjaGVk
Q29udmVydGVyID0gbmV3IFRocmVhZFNwZWNpZmljPFRFQ0NvbnZlcnRlcldyYXBwZXI+KTsKKyAg
ICByZXR1cm4gKipjYWNoZWRDb252ZXJ0ZXI7CisjZWxzZQorICAgIFRFQ0NvbnZlcnRlcldyYXBw
ZXIqIGNhY2hlZENvbnZlcnRlciA9IG5ldyBURUNDb252ZXJ0ZXJXcmFwcGVyOworICAgIHJldHVy
biAqY2FjaGVkQ29udmVydGVyOworI2VuZGlmCit9CiAKIHZvaWQgVGV4dENvZGVjTWFjOjpyZWdp
c3RlckVuY29kaW5nTmFtZXMoRW5jb2RpbmdOYW1lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKQEAg
LTkxLDIyICsxMTAsMjYgQEAgVGV4dENvZGVjTWFjOjp+VGV4dENvZGVjTWFjKCkKIHZvaWQgVGV4
dENvZGVjTWFjOjpyZWxlYXNlVEVDQ29udmVydGVyKCkgY29uc3QKIHsKICAgICBpZiAobV9jb252
ZXJ0ZXJURUMpIHsKLSAgICAgICAgaWYgKGNhY2hlZENvbnZlcnRlclRFQyAhPSAwKQotICAgICAg
ICAgICAgVEVDRGlzcG9zZUNvbnZlcnRlcihjYWNoZWRDb252ZXJ0ZXJURUMpOwotICAgICAgICBj
YWNoZWRDb252ZXJ0ZXJURUMgPSBtX2NvbnZlcnRlclRFQzsKLSAgICAgICAgY2FjaGVkQ29udmVy
dGVyRW5jb2RpbmcgPSBtX2VuY29kaW5nOworICAgICAgICBURUNDb252ZXJ0ZXJXcmFwcGVyJiBj
YWNoZWRDb252ZXJ0ZXIgPSBjYWNoZWRDb252ZXJ0ZXJURUMoKTsKKyAgICAgICAgaWYgKGNhY2hl
ZENvbnZlcnRlci5jb252ZXJ0ZXIpCisgICAgICAgICAgICBURUNEaXNwb3NlQ29udmVydGVyKGNh
Y2hlZENvbnZlcnRlci5jb252ZXJ0ZXIpOworICAgICAgICBjYWNoZWRDb252ZXJ0ZXIuY29udmVy
dGVyID0gbV9jb252ZXJ0ZXJURUM7CisgICAgICAgIGNhY2hlZENvbnZlcnRlci5lbmNvZGluZyA9
IG1fZW5jb2Rpbmc7CiAgICAgICAgIG1fY29udmVydGVyVEVDID0gMDsKICAgICB9CiB9CiAKIE9T
U3RhdHVzIFRleHRDb2RlY01hYzo6Y3JlYXRlVEVDQ29udmVydGVyKCkgY29uc3QKIHsKLSAgICBi
b29sIGNhY2hlZEVuY29kaW5nRXF1YWwgPSBjYWNoZWRDb252ZXJ0ZXJFbmNvZGluZyA9PSBtX2Vu
Y29kaW5nOwotICAgIGNhY2hlZENvbnZlcnRlckVuY29kaW5nID0gaW52YWxpZEVuY29kaW5nOwor
ICAgIFRFQ0NvbnZlcnRlcldyYXBwZXImIGNhY2hlZENvbnZlcnRlciA9IGNhY2hlZENvbnZlcnRl
clRFQygpOworCisgICAgYm9vbCBjYWNoZWRFbmNvZGluZ0VxdWFsID0gY2FjaGVkQ29udmVydGVy
LmVuY29kaW5nID09IG1fZW5jb2Rpbmc7CisgICAgY2FjaGVkQ29udmVydGVyLmVuY29kaW5nID0g
aW52YWxpZEVuY29kaW5nOworCisgICAgaWYgKGNhY2hlZEVuY29kaW5nRXF1YWwgJiYgY2FjaGVk
Q29udmVydGVyLmNvbnZlcnRlcikgeworICAgICAgICBtX2NvbnZlcnRlclRFQyA9IGNhY2hlZENv
bnZlcnRlci5jb252ZXJ0ZXI7CisgICAgICAgIGNhY2hlZENvbnZlcnRlci5jb252ZXJ0ZXIgPSAw
OwogCi0gICAgaWYgKGNhY2hlZEVuY29kaW5nRXF1YWwgJiYgY2FjaGVkQ29udmVydGVyVEVDKSB7
Ci0gICAgICAgIG1fY29udmVydGVyVEVDID0gY2FjaGVkQ29udmVydGVyVEVDOwotICAgICAgICBj
YWNoZWRDb252ZXJ0ZXJURUMgPSAwOwogICAgICAgICBURUNDbGVhckNvbnZlcnRlckNvbnRleHRJ
bmZvKG1fY29udmVydGVyVEVDKTsKICAgICB9IGVsc2UgewogICAgICAgICBPU1N0YXR1cyBzdGF0
dXMgPSBURUNDcmVhdGVDb252ZXJ0ZXIoJm1fY29udmVydGVyVEVDLCBtX2VuY29kaW5nLApAQCAt
MTE2LDcgKzEzOSw3IEBAIE9TU3RhdHVzIFRleHRDb2RlY01hYzo6Y3JlYXRlVEVDQ29udmVydGUK
IAogICAgICAgICBURUNTZXRCYXNpY09wdGlvbnMobV9jb252ZXJ0ZXJURUMsIGtVbmljb2RlRm9y
Y2VBU0NJSVJhbmdlTWFzayk7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIG5vRXJyOwogfQog
Cg==
</data>
<flag name="review"
          id="11685"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>