<?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>25774</bug_id>
          
          <creation_ts>2009-05-13 17:50:31 -0700</creation_ts>
          <short_desc>Need to upstream V8MessagePortCustom.cpp</short_desc>
          <delta_ts>2009-05-14 12:59:36 -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>WebCore JavaScript</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="Andrew Wilson">atwilson</reporter>
          <assigned_to name="David Levin">levin</assigned_to>
          <cc>dglazkov</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>121184</commentid>
    <comment_count>0</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-05-13 17:50:31 -0700</bug_when>
    <thetext>The V8 implementation of MessagePorts needs to be upstreamed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121186</commentid>
    <comment_count>1</comment_count>
      <attachid>30307</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-05-13 17:56:32 -0700</bug_when>
    <thetext>Created attachment 30307
patch with upstreamed file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121291</commentid>
    <comment_count>2</comment_count>
      <attachid>30307</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-05-14 07:45:18 -0700</bug_when>
    <thetext>Comment on attachment 30307
patch with upstreamed file

It seems we could share some code between the onMessage and onClose handlers no?  I think I would have used a static function to make those long if/else blocks not need to be copy/paste there.  Please feel free to re-mark r=? if I&apos;m missing something.

Otherwise the code looks sane enough.  createHiddenDependency and removeHiddenDependency seem confusing... what are they for?

I assume also that this is already covered by existing layout tests?  Otherwise this needs some form of testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121307</commentid>
    <comment_count>3</comment_count>
      <attachid>30307</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-05-14 08:53:23 -0700</bug_when>
    <thetext>Comment on attachment 30307
patch with upstreamed file

Eric is probably right about making this look better, but right now let&apos;s stay on the goal of moving all these upstream. Drew, can you file a WebKit bug to track (and act on) Eric&apos;s suggestion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121332</commentid>
    <comment_count>4</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-05-14 10:52:59 -0700</bug_when>
    <thetext>I&apos;ve logged bug #25795 to track the needed refactoring. The required refactoring is actually very widespread - the code pattern Eric mentioned is shared across many different files in binding/v8/custom and we should refactor all of them.

I believe that createHiddenDependency() and removeHiddenDependency() (from V8Utilities.h) are standard utility routines used by v8 to track the event listeners for GC purposes (make sure they don&apos;t get GC&apos;d prematurely).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121337</commentid>
    <comment_count>5</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-05-14 11:16:42 -0700</bug_when>
    <thetext>Assign to levin for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121364</commentid>
    <comment_count>6</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-05-14 12:59:36 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/43722</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30307</attachid>
            <date>2009-05-13 17:56:32 -0700</date>
            <delta_ts>2009-05-14 08:53:23 -0700</delta_ts>
            <desc>patch with upstreamed file</desc>
            <filename>25774.txt</filename>
            <type>text/plain</type>
            <size>7697</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MzY3MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMDktMDUtMTMgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU3NzQKKyAgICAgICAgVXBz
dHJlYW0gVjhNZXNzYWdlUG9ydEN1c3RvbS5jcHAgZnJvbSB0aGUgY2hyb21pdW0gcmVwb3NpdG9y
eS4KKworICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBQ0NFU1NPUl9HRVRURVIpOgorICAgICAgICAo
V2ViQ29yZTo6QUNDRVNTT1JfU0VUVEVSKToKKyAgICAgICAgKFdlYkNvcmU6OkNBTExCQUNLX0ZV
TkNfREVDTCk6CisKIDIwMDktMDUtMTMgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcAkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20u
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2lu
Y2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgorI2luY2x1
ZGUgIlY4T2JqZWN0RXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNs
dWRlICJWOFV0aWxpdGllcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0FDQ0VTU09SX0dF
VFRFUihNZXNzYWdlUG9ydE9ubWVzc2FnZSkKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5NZXNzYWdl
UG9ydC5vbm1lc3NhZ2UuX2dldCIpOworICAgIE1lc3NhZ2VQb3J0KiBtZXNzYWdlUG9ydCA9IFY4
UHJveHk6OlRvTmF0aXZlT2JqZWN0PE1lc3NhZ2VQb3J0PihWOENsYXNzSW5kZXg6Ok1FU1NBR0VQ
T1JULCBpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gVjhQcm94eTo6RXZlbnRMaXN0ZW5lclRv
VjhPYmplY3QobWVzc2FnZVBvcnQtPm9ubWVzc2FnZSgpKTsKK30KKworQUNDRVNTT1JfU0VUVEVS
KE1lc3NhZ2VQb3J0T25tZXNzYWdlKQoreworICAgIElOQ19TVEFUUygiRE9NLk1lc3NhZ2VQb3J0
Lm9ubWVzc2FnZS5fc2V0Iik7CisgICAgTWVzc2FnZVBvcnQqIG1lc3NhZ2VQb3J0ID0gVjhQcm94
eTo6VG9OYXRpdmVPYmplY3Q8TWVzc2FnZVBvcnQ+KFY4Q2xhc3NJbmRleDo6TUVTU0FHRVBPUlQs
IGluZm8uSG9sZGVyKCkpOworICAgIGlmICh2YWx1ZS0+SXNOdWxsKCkpIHsKKyAgICAgICAgaWYg
KG1lc3NhZ2VQb3J0LT5vbm1lc3NhZ2UoKSkgeworICAgICAgICAgICAgVjhPYmplY3RFdmVudExp
c3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4T2JqZWN0RXZlbnRMaXN0ZW5lcio+KG1l
c3NhZ2VQb3J0LT5vbm1lc3NhZ2UoKSk7CisgICAgICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRl
bmN5KGluZm8uSG9sZGVyKCksIGxpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpLCBWOEN1c3Rv
bTo6a01lc3NhZ2VQb3J0UmVxdWVzdENhY2hlSW5kZXgpOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gQ2xlYXIgdGhlIGxpc3RlbmVyLgorICAgICAgICBtZXNzYWdlUG9ydC0+c2V0T25tZXNzYWdl
KDApOworCisgICAgfSBlbHNlIHsKKyAgICAgICAgVjhQcm94eSogcHJveHkgPSBWOFByb3h5Ojpy
ZXRyaWV2ZShtZXNzYWdlUG9ydC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAg
aWYgKCFwcm94eSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4gbGlzdGVuZXIgPSBwcm94eS0+RmluZE9yQ3JlYXRlT2JqZWN0RXZlbnRMaXN0ZW5l
cih2YWx1ZSwgZmFsc2UpOworICAgICAgICBpZiAobGlzdGVuZXIpIHsKKyAgICAgICAgICAgIG1l
c3NhZ2VQb3J0LT5zZXRPbm1lc3NhZ2UobGlzdGVuZXIpOworICAgICAgICAgICAgY3JlYXRlSGlk
ZGVuRGVwZW5kZW5jeShpbmZvLkhvbGRlcigpLCB2YWx1ZSwgVjhDdXN0b206OmtNZXNzYWdlUG9y
dFJlcXVlc3RDYWNoZUluZGV4KTsKKyAgICAgICAgfQorICAgIH0KK30KKworQUNDRVNTT1JfR0VU
VEVSKE1lc3NhZ2VQb3J0T25jbG9zZSkKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5NZXNzYWdlUG9y
dC5vbmNsb3NlLl9nZXQiKTsKKyAgICBNZXNzYWdlUG9ydCogbWVzc2FnZVBvcnQgPSBWOFByb3h5
OjpUb05hdGl2ZU9iamVjdDxNZXNzYWdlUG9ydD4oVjhDbGFzc0luZGV4OjpNRVNTQUdFUE9SVCwg
aW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIFY4UHJveHk6OkV2ZW50TGlzdGVuZXJUb1Y4T2Jq
ZWN0KG1lc3NhZ2VQb3J0LT5vbmNsb3NlKCkpOworfQorCitBQ0NFU1NPUl9TRVRURVIoTWVzc2Fn
ZVBvcnRPbmNsb3NlKQoreworICAgIElOQ19TVEFUUygiRE9NLk1lc3NhZ2VQb3J0Lm9uY2xvc2Uu
X3NldCIpOworICAgIE1lc3NhZ2VQb3J0KiBtZXNzYWdlUG9ydCA9IFY4UHJveHk6OlRvTmF0aXZl
T2JqZWN0PE1lc3NhZ2VQb3J0PihWOENsYXNzSW5kZXg6Ok1FU1NBR0VQT1JULCBpbmZvLkhvbGRl
cigpKTsKKyAgICBpZiAodmFsdWUtPklzTnVsbCgpKSB7CisgICAgICAgIGlmIChtZXNzYWdlUG9y
dC0+b25jbG9zZSgpKSB7CisgICAgICAgICAgICBWOE9iamVjdEV2ZW50TGlzdGVuZXIqIGxpc3Rl
bmVyID0gc3RhdGljX2Nhc3Q8VjhPYmplY3RFdmVudExpc3RlbmVyKj4obWVzc2FnZVBvcnQtPm9u
Y2xvc2UoKSk7CisgICAgICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVy
KCksIGxpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpLCBWOEN1c3RvbTo6a1hNTEh0dHBSZXF1
ZXN0Q2FjaGVJbmRleCk7CisgICAgICAgIH0KKworCisgICAgICAgIC8vIENsZWFyIHRoZSBsaXN0
ZW5lci4KKyAgICAgICAgbWVzc2FnZVBvcnQtPnNldE9uY2xvc2UoMCk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgVjhQcm94eSogcHJveHkgPSBWOFByb3h5OjpyZXRyaWV2ZShtZXNzYWdlUG9ydC0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgaWYgKCFwcm94eSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBw
cm94eS0+RmluZE9yQ3JlYXRlT2JqZWN0RXZlbnRMaXN0ZW5lcih2YWx1ZSwgZmFsc2UpOworICAg
ICAgICBpZiAobGlzdGVuZXIpIHsKKyAgICAgICAgICAgIG1lc3NhZ2VQb3J0LT5zZXRPbmNsb3Nl
KGxpc3RlbmVyKTsKKyAgICAgICAgICAgIGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xk
ZXIoKSwgdmFsdWUsIFY4Q3VzdG9tOjprTWVzc2FnZVBvcnRSZXF1ZXN0Q2FjaGVJbmRleCk7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK0NBTExCQUNLX0ZVTkNfREVDTChNZXNzYWdlUG9ydFN0YXJ0
Q29udmVyc2F0aW9uKQoreworICAgIElOQ19TVEFUUygiRE9NLk1lc3NhZ2VQb3J0LlN0YXJ0Q29u
dmVyc2F0aW9uKCkiKTsKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCisgICAgICAgIHJldHVy
biB0aHJvd0Vycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIsIFY4UHJveHk6OlNZTlRBWF9FUlJP
Uik7CisgICAgTWVzc2FnZVBvcnQqIG1lc3NhZ2VQb3J0ID0gVjhQcm94eTo6VG9OYXRpdmVPYmpl
Y3Q8TWVzc2FnZVBvcnQ+KFY4Q2xhc3NJbmRleDo6TUVTU0FHRVBPUlQsIGFyZ3MuSG9sZGVyKCkp
OworCisgICAgVjhQcm94eSogcHJveHkgPSBWOFByb3h5OjpyZXRyaWV2ZShtZXNzYWdlUG9ydC0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIXByb3h5KQorICAgICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOworCisgICAgUmVmUHRyPE1lc3NhZ2VQb3J0PiBwb3J0ID0gbWVz
c2FnZVBvcnQtPnN0YXJ0Q29udmVyc2F0aW9uKG1lc3NhZ2VQb3J0LT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHdyYXBwZXIgPSBWOFByb3h5OjpUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6TUVTU0FH
RVBPUlQsIHBvcnQuZ2V0KCkpOworICAgIHJldHVybiB3cmFwcGVyOworfQorCitDQUxMQkFDS19G
VU5DX0RFQ0woTWVzc2FnZVBvcnRBZGRFdmVudExpc3RlbmVyKQoreworICAgIElOQ19TVEFUUygi
RE9NLk1lc3NhZ2VQb3J0LkFkZEV2ZW50TGlzdGVuZXIoKSIpOworICAgIE1lc3NhZ2VQb3J0KiBt
ZXNzYWdlUG9ydCA9IFY4UHJveHk6OlRvTmF0aXZlT2JqZWN0PE1lc3NhZ2VQb3J0PihWOENsYXNz
SW5kZXg6Ok1FU1NBR0VQT1JULCBhcmdzLkhvbGRlcigpKTsKKworICAgIFY4UHJveHkqIHByb3h5
ID0gVjhQcm94eTo6cmV0cmlldmUobWVzc2FnZVBvcnQtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSk7CisgICAgaWYgKCFwcm94eSkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKwor
ICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IHByb3h5LT5GaW5kT3JDcmVhdGVP
YmplY3RFdmVudExpc3RlbmVyKGFyZ3NbMV0sIGZhbHNlKTsKKyAgICBpZiAobGlzdGVuZXIpIHsK
KyAgICAgICAgU3RyaW5nIHR5cGUgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSk7CisgICAgICAg
IGJvb2wgdXNlQ2FwdHVyZSA9IGFyZ3NbMl0tPkJvb2xlYW5WYWx1ZSgpOworICAgICAgICBtZXNz
YWdlUG9ydC0+YWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisK
KyAgICAgICAgY3JlYXRlSGlkZGVuRGVwZW5kZW5jeShhcmdzLkhvbGRlcigpLCBhcmdzWzFdLCBW
OEN1c3RvbTo6a01lc3NhZ2VQb3J0UmVxdWVzdENhY2hlSW5kZXgpOworICAgIH0KKyAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOworfQorCitDQUxMQkFDS19GVU5DX0RFQ0woTWVzc2FnZVBvcnRS
ZW1vdmVFdmVudExpc3RlbmVyKQoreworICAgIElOQ19TVEFUUygiRE9NLk1lc3NhZ2VQb3J0LlJl
bW92ZUV2ZW50TGlzdGVuZXIoKSIpOworICAgIE1lc3NhZ2VQb3J0KiBtZXNzYWdlUG9ydCA9IFY4
UHJveHk6OlRvTmF0aXZlT2JqZWN0PE1lc3NhZ2VQb3J0PihWOENsYXNzSW5kZXg6Ok1FU1NBR0VQ
T1JULCBhcmdzLkhvbGRlcigpKTsKKworICAgIFY4UHJveHkqIHByb3h5ID0gVjhQcm94eTo6cmV0
cmlldmUobWVzc2FnZVBvcnQtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgaWYgKCFw
cm94eSkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsgIC8vIHByb2JhYmx5IGxlYWtl
ZAorCisgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gcHJveHktPkZpbmRPYmpl
Y3RFdmVudExpc3RlbmVyKGFyZ3NbMV0sIGZhbHNlKTsKKworICAgIGlmIChsaXN0ZW5lcikgewor
ICAgICAgICBTdHJpbmcgdHlwZSA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKKyAgICAgICAg
Ym9vbCB1c2VDYXB0dXJlID0gYXJnc1syXS0+Qm9vbGVhblZhbHVlKCk7CisgICAgICAgIG1lc3Nh
Z2VQb3J0LT5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLmdldCgpLCB1c2VDYXB0
dXJlKTsKKworICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGFy
Z3NbMV0sIFY4Q3VzdG9tOjprTWVzc2FnZVBvcnRSZXF1ZXN0Q2FjaGVJbmRleCk7CisgICAgfQor
CisgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQo=
</data>
<flag name="review"
          id="15253"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>