<?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>52272</bug_id>
          
          <creation_ts>2011-01-11 20:15:23 -0800</creation_ts>
          <short_desc>check-webkit-style -- close_expression function doesn&apos;t work correctly.</short_desc>
          <delta_ts>2011-01-12 11:44:27 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>52271</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Levin">levin</reporter>
          <assigned_to name="David Levin">levin</assigned_to>
          <cc>hamaji</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>332884</commentid>
    <comment_count>0</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-01-11 20:15:23 -0800</bug_when>
    <thetext>See summary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332886</commentid>
    <comment_count>1</comment_count>
      <attachid>78644</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-01-11 20:18:11 -0800</bug_when>
    <thetext>Created attachment 78644
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332911</commentid>
    <comment_count>2</comment_count>
      <attachid>78644</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-01-11 22:01:03 -0800</bug_when>
    <thetext>Comment on attachment 78644
Patch

At least one person said this was hard to understand so I&apos;ll try to make the code easier to read.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332963</commentid>
    <comment_count>3</comment_count>
      <attachid>78644</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2011-01-12 01:35:24 -0800</bug_when>
    <thetext>Comment on attachment 78644
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=78644&amp;action=review

No, I was so sick and my brain stopped working when I told you that I couldn&apos;t understand it. Now I feel better and I can understand this patch :) I&apos;m sure this code is good enough to land this as is. I put some nitpicks.

&gt; Tools/Scripts/webkitpy/style/checkers/cpp.py:817
&gt;          end_character = &apos;)&apos;

How about creating the regexp string here?

if start_character == &apos;(&apos;:
  enclosing_characeter_regexp = r&apos;[\{\}]&apos;
elif
  ...

&gt; Tools/Scripts/webkitpy/style/checkers/cpp.py:829
&gt; +    while True:

I think you used while because we start in the middle of the first line, but I&apos;d mildly prefer for-loop:

current_column = position.column + 1
net_open = 1
for line_number in xrange(position.row, len(elided):
  line = elided[line_number][current_column:]
  while True:
     ...
  current_column = 0
return Position(len(elided), -1)

because in this way we can clearly see the iterator of the outer loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333199</commentid>
    <comment_count>4</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-01-12 11:43:36 -0800</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/75628</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333200</commentid>
    <comment_count>5</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-01-12 11:44:27 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 78644 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=78644&amp;action=review
&gt; 
&gt; No, I was so sick and my brain stopped working when I told you that I couldn&apos;t understand it. Now I feel better and I can understand this patch :) I&apos;m sure this code is good enough to land this as is. I put some nitpicks.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/style/checkers/cpp.py:817
&gt; &gt;          end_character = &apos;)&apos;
&gt; 
&gt; How about creating the regexp string here?
&gt; 
&gt; if start_character == &apos;(&apos;:
&gt;   enclosing_characeter_regexp = r&apos;[\{\}]&apos;
&gt; elif
&gt;   ...
&gt; 
Done.

&gt; &gt; Tools/Scripts/webkitpy/style/checkers/cpp.py:829
&gt; &gt; +    while True:
&gt; 
&gt; I think you used while because we start in the middle of the first line, but I&apos;d mildly prefer for-loop:
&gt; 
&gt; current_column = position.column + 1
&gt; net_open = 1
&gt; for line_number in xrange(position.row, len(elided):
&gt;   line = elided[line_number][current_column:]
&gt;   while True:
&gt;      ...
&gt;   current_column = 0
&gt; return Position(len(elided), -1)
&gt; 
&gt; because in this way we can clearly see the iterator of the outer loop.

I really like this. I did it (in a slightly modified way but basically the same idea).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78644</attachid>
            <date>2011-01-11 20:18:11 -0800</date>
            <delta_ts>2011-01-12 01:35:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52272-20110111201810.patch</filename>
            <type>text/plain</type>
            <size>9591</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwOGFk
YWMwOTEzZDlmODQyMGNmNjc0ZTkyZWZjYTM1NDk3ZGZiNzA5Li4yM2U3MWI3YjcyMWYyOWQwMWEz
ZmE4MzVlNjk5OWIwOTM1NmJiNGE5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDEtMDYgIERhdmlkIExldmlu
ICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGNoZWNrLXdlYmtpdC1zdHlsZSAtLSBjbG9zZV9leHByZXNzaW9uIGZ1
bmN0aW9uIGRvZXNuJ3Qgd29yayBjb3JyZWN0bHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjI3MgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2Vycy9jcHAucHk6CisgICAgICAgIChQb3NpdGlvbi5fX3N0cl9fKTogQWRk
ZWQgYSB3YXkgdG8gY29udmVydCBpdCB0byBhIHN0cmluZyB3aGljaCBpcyB1c2VmdWwgaW4gdGVz
dHMuCisgICAgICAgIChQb3NpdGlvbi5fX2NtcF9fKTogQWRkZWQgYSB3YXkgdG8gY29tcGFyZSBQ
b3NpdGlvbiB3aGljaCBpcyB1c2VmdWwgaW4gdGVzdHMgYW5kCisgICAgICAgIGdlbmVyYWxseSB1
c2VmdWwgKGZvciB1cGNvbWluZyBjb2RlIGNoYW5nZXMpLgorICAgICAgICAoY2xvc2VfZXhwcmVz
c2lvbik6IENoYW5nZWQgdG8gdXNlIFBvc2l0aW9uIGZvciBpbnB1dCBhbmQgb3V0cHV0LgorICAg
ICAgICBBbHNvLCBmaXhlZCBtYW55IGJ1Z3Mgc3VjaCBhcyBvbmx5IHdvcmtpbmcgY29ycmVjdGx5
IGZvciBwYXJlbnRoZXNpcywKKyAgICAgICAgbm90IHdvcmtpbmcgY29ycmVjdGx5IGlmIGdpdmVu
IGFuIG9mZnNldCBpbiBhIGxpbmUgYW5kIG5vdCBmaW5kaW5nCisgICAgICAgIHRoZSByZWFsIGNs
b3NpbmcgZWxlbWVudCBpZiB0aGVyZSB3ZXJlIG11bHRpcGxlIGNsb3NpbmcgZWxlbWVudHMgaW4K
KyAgICAgICAgdGhlIHNhbWUgbGluZS4KKyAgICAgICAgKGRldGVjdF9mdW5jdGlvbnMpOiBBZGp1
c3RlZCBkdWUgdG8gdGhlIGNoYW5nZSBpbiBhcmd1bWVudHMgZm9yCisgICAgICAgIGNsb3NlX2V4
cHJlc3Npb24uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBf
dW5pdHRlc3QucHk6CisgICAgICAgIChDcHBTdHlsZVRlc3RCYXNlLmFzc2VydF9wb3NpdGlvbnNf
ZXF1YWwpOiBBZGRlZCBhIHdheSB0byB2ZXJpZnkgdGhhdAorICAgICAgICB0d28gcG9zaXRpb25z
IGFyZSB0aGUgc2FtZS4KKyAgICAgICAgKENwcFN0eWxlVGVzdC50ZXN0X3Bvc2l0aW9uKTogQWRk
ZWQgdGVzdHMgZm9yIHRoZSBfX3N0cl8gYW5kIF9fY21wX18gbWV0aG9kcy4KKyAgICAgICAgKENw
cFN0eWxlVGVzdC50ZXN0X2Nsb3NlX2V4cHJlc3Npb24pOiBBZGRlZCB0ZXN0cyB0byBjYXRjaCB0
aGUgaXNzdWVzCisgICAgICAgIHRoYXQgd2VyZSBmaXhlZC4KKwogMjAxMS0wMS0wNiAgTGFzemxv
IEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXJzL2NwcC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMv
Y3BwLnB5CmluZGV4IDRlYTdkNjk4NGRmZjAxOTlmMjZjYzM2YWY1ZmVhMDE3ZjBlODU4ZjIuLmM2
ZjgwOWQyMDYxZmVjYjMzZGVmMGNjNDRlZGJiNTI4YjY2YTg1YWEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CkBAIC0zNDQsNiArMzQ0LDEyIEBAIGNs
YXNzIFBvc2l0aW9uKG9iamVjdCk6CiAgICAgICAgIHNlbGYucm93ID0gcm93CiAgICAgICAgIHNl
bGYuY29sdW1uID0gY29sdW1uCiAKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0
dXJuICcoJXMsICVzKScgJSAoc2VsZi5yb3csIHNlbGYuY29sdW1uKQorCisgICAgZGVmIF9fY21w
X18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZi5yb3cuX19jbXBfXyhvdGhlci5y
b3cpIG9yIHNlbGYuY29sdW1uLl9fY21wX18ob3RoZXIuY29sdW1uKQorCiAKIGNsYXNzIFBhcmFt
ZXRlcihvYmplY3QpOgogICAgICIiIkluZm9ybWF0aW9uIGFib3V0IG9uZSBmdW5jdGlvbiBwYXJh
bWV0ZXIuIiIiCkBAIC03OTEsNDggKzc5Nyw1MyBAQCBjbGFzcyBDbGVhbnNlZExpbmVzKG9iamVj
dCk6CiAgICAgICAgIHJldHVybiBlbGlkZWQKIAogCi1kZWYgY2xvc2VfZXhwcmVzc2lvbihjbGVh
bl9saW5lcywgbGluZV9udW1iZXIsIHBvcyk6CitkZWYgY2xvc2VfZXhwcmVzc2lvbihlbGlkZWQs
IHBvc2l0aW9uKToKICAgICAiIiJJZiBpbnB1dCBwb2ludHMgdG8gKCBvciB7IG9yIFssIGZpbmRz
IHRoZSBwb3NpdGlvbiB0aGF0IGNsb3NlcyBpdC4KIAotICAgIElmIGNsZWFuX2xpbmVzLmVsaWRl
ZFtsaW5lX251bWJlcl1bcG9zXSBwb2ludHMgdG8gYSAnKCcgb3IgJ3snIG9yICdbJywgZmluZHMK
LSAgICB0aGUgbGluZV9udW1iZXIvcG9zIHRoYXQgY29ycmVzcG9uZCB0byB0aGUgY2xvc2luZyBv
ZiB0aGUgZXhwcmVzc2lvbi4KKyAgICBJZiBlbGlkZWRbcG9zaXRpb24ucm93XVtwb3NpdGlvbi5j
b2x1bW5dIHBvaW50cyB0byBhICcoJyBvciAneycgb3IgJ1snLAorICAgIGZpbmRzIHRoZSBsaW5l
X251bWJlci9wb3MgdGhhdCBjb3JyZXNwb25kIHRvIHRoZSBjbG9zaW5nIG9mIHRoZSBleHByZXNz
aW9uLgogCi0gICAgQXJnczoKLSAgICAgIGNsZWFuX2xpbmVzOiBBIENsZWFuc2VkTGluZXMgaW5z
dGFuY2UgY29udGFpbmluZyB0aGUgZmlsZS4KLSAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVy
IG9mIHRoZSBsaW5lIHRvIGNoZWNrLgotICAgICAgcG9zOiBBIHBvc2l0aW9uIG9uIHRoZSBsaW5l
LgorICAgICBBcmdzOgorICAgICAgIGVsaWRlZDogQSBDbGVhbnNlZExpbmVzLmVsaWRlZCBpbnN0
YW5jZSBjb250YWluaW5nIHRoZSBmaWxlLgorICAgICAgIHBvc2l0aW9uOiBUaGUgcG9zaXRpb24g
b2YgdGhlIG9wZW5pbmcgaXRlbS4KIAotICAgIFJldHVybnM6Ci0gICAgICBBIHR1cGxlIChsaW5l
LCBsaW5lX251bWJlciwgcG9zKSBwb2ludGVyICpwYXN0KiB0aGUgY2xvc2luZyBicmFjZSwgb3IK
LSAgICAgICgnJywgbGVuKGNsZWFuX2xpbmVzLmVsaWRlZCksIC0xKSBpZiB3ZSBuZXZlciBmaW5k
IGEgY2xvc2UuICBOb3RlIHdlCi0gICAgICBpZ25vcmUgc3RyaW5ncyBhbmQgY29tbWVudHMgd2hl
biBtYXRjaGluZzsgYW5kIHRoZSBsaW5lIHdlIHJldHVybiBpcyB0aGUKLSAgICAgICdjbGVhbnNl
ZCcgbGluZSBhdCBsaW5lX251bWJlci4KKyAgICAgUmV0dXJuczoKKyAgICAgIFRoZSBQb3NpdGlv
biAqcGFzdCogdGhlIGNsb3NpbmcgYnJhY2UsIG9yIFBvc2l0aW9uKGxlbihlbGlkZWQpLCAtMSkK
KyAgICAgIGlmIHdlIG5ldmVyIGZpbmQgYSBjbG9zZS4gTm90ZSB3ZSBpZ25vcmUgc3RyaW5ncyBh
bmQgY29tbWVudHMgd2hlbiBtYXRjaGluZy4KICAgICAiIiIKLQotICAgIGxpbmUgPSBjbGVhbl9s
aW5lcy5lbGlkZWRbbGluZV9udW1iZXJdCi0gICAgc3RhcnRfY2hhcmFjdGVyID0gbGluZVtwb3Nd
Ci0gICAgaWYgc3RhcnRfY2hhcmFjdGVyIG5vdCBpbiAnKHtbJzoKLSAgICAgICAgcmV0dXJuIChs
aW5lLCBjbGVhbl9saW5lcy5udW1fbGluZXMoKSwgLTEpCisgICAgbGluZSA9IGVsaWRlZFtwb3Np
dGlvbi5yb3ddCisgICAgc3RhcnRfY2hhcmFjdGVyID0gbGluZVtwb3NpdGlvbi5jb2x1bW5dCiAg
ICAgaWYgc3RhcnRfY2hhcmFjdGVyID09ICcoJzoKICAgICAgICAgZW5kX2NoYXJhY3RlciA9ICcp
JwotICAgIGlmIHN0YXJ0X2NoYXJhY3RlciA9PSAnWyc6CisgICAgZWxpZiBzdGFydF9jaGFyYWN0
ZXIgPT0gJ1snOgogICAgICAgICBlbmRfY2hhcmFjdGVyID0gJ10nCi0gICAgaWYgc3RhcnRfY2hh
cmFjdGVyID09ICd7JzoKKyAgICBlbGlmIHN0YXJ0X2NoYXJhY3RlciA9PSAneyc6CiAgICAgICAg
IGVuZF9jaGFyYWN0ZXIgPSAnfScKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gUG9zaXRpb24o
bGVuKGVsaWRlZCksIC0xKQogCi0gICAgbnVtX29wZW4gPSBsaW5lLmNvdW50KHN0YXJ0X2NoYXJh
Y3RlcikgLSBsaW5lLmNvdW50KGVuZF9jaGFyYWN0ZXIpCi0gICAgd2hpbGUgbnVtX29wZW4gPiAw
OgorICAgIGN1cnJlbnRfY29sdW1uID0gcG9zaXRpb24uY29sdW1uICsgMQorICAgIGxpbmVfbnVt
YmVyID0gcG9zaXRpb24ucm93CisgICAgbGluZSA9IGxpbmVbY3VycmVudF9jb2x1bW46XQorICAg
IG5ldF9vcGVuID0gMQorICAgIHdoaWxlIFRydWU6CisgICAgICAgIHdoaWxlIFRydWU6CisgICAg
ICAgICAgICBuZXh0X2VuY2xvc2luZ19jaGFyYWN0ZXIgPSBzZWFyY2goJ1xcJyArIHN0YXJ0X2No
YXJhY3RlciArICd8XFwnICsgZW5kX2NoYXJhY3RlciwgbGluZSkKKyAgICAgICAgICAgIGlmIG5v
dCBuZXh0X2VuY2xvc2luZ19jaGFyYWN0ZXI6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAg
ICAgICAgIGN1cnJlbnRfY29sdW1uICs9IG5leHRfZW5jbG9zaW5nX2NoYXJhY3Rlci5lbmQoMCkK
KyAgICAgICAgICAgIGxpbmUgPSBsaW5lW25leHRfZW5jbG9zaW5nX2NoYXJhY3Rlci5lbmQoMCk6
XQorICAgICAgICAgICAgaWYgbmV4dF9lbmNsb3NpbmdfY2hhcmFjdGVyLmdyb3VwKDApID09IHN0
YXJ0X2NoYXJhY3RlcjoKKyAgICAgICAgICAgICAgICBuZXRfb3BlbiArPSAxCisgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgIG5ldF9vcGVuIC09IDEKKyAgICAgICAgICAgICAgICBp
ZiBub3QgbmV0X29wZW46CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBQb3NpdGlvbihsaW5l
X251bWJlciwgY3VycmVudF9jb2x1bW4pCiAgICAgICAgIGxpbmVfbnVtYmVyICs9IDEKLSAgICAg
ICAgaWYgbGluZV9udW1iZXIgPj0gY2xlYW5fbGluZXMubnVtX2xpbmVzKCk6Ci0gICAgICAgICAg
ICByZXR1cm4gKCcnLCBsZW4oY2xlYW5fbGluZXMuZWxpZGVkKSwgLTEpCi0gICAgICAgIGxpbmUg
PSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdCi0gICAgICAgIG51bV9vcGVuICs9IGxp
bmUuY291bnQoc3RhcnRfY2hhcmFjdGVyKSAtIGxpbmUuY291bnQoZW5kX2NoYXJhY3RlcikKLSAg
ICAjIE9LLCBub3cgZmluZCB0aGUgZW5kX2NoYXJhY3RlciB0aGF0IGFjdHVhbGx5IGdvdCB1cyBi
YWNrIHRvIGV2ZW4KLSAgICBlbmRwb3MgPSBsZW4obGluZSkKLSAgICB3aGlsZSBudW1fb3BlbiA+
PSAwOgotICAgICAgICBlbmRwb3MgPSBsaW5lLnJmaW5kKCcpJywgMCwgZW5kcG9zKQotICAgICAg
ICBudW1fb3BlbiAtPSAxICAgICAgICAgICAgICAgICAjIGNob3BwZWQgb2ZmIGFub3RoZXIgKQot
ICAgIHJldHVybiAobGluZSwgbGluZV9udW1iZXIsIGVuZHBvcyArIDEpCisgICAgICAgIGlmIGxp
bmVfbnVtYmVyID49IGxlbihlbGlkZWQpOgorICAgICAgICAgICAgcmV0dXJuIFBvc2l0aW9uKGxl
bihlbGlkZWQpLCAtMSkKKyAgICAgICAgY3VycmVudF9jb2x1bW4gPSAwCisgICAgICAgIGxpbmUg
PSBlbGlkZWRbbGluZV9udW1iZXJdCiAKIAogZGVmIGNoZWNrX2Zvcl9jb3B5cmlnaHQobGluZXMs
IGVycm9yKToKQEAgLTE0MjksMTggKzE0NDAsMTcgQEAgZGVmIGRldGVjdF9mdW5jdGlvbnMoY2xl
YW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmdW5jdGlvbl9zdGF0ZSwgZXJyb3IpOgogICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uICs9ICcoKScKIAogICAgICAgICAgICAgcGFyYW1ldGVyX3N0YXJ0X3Bv
c2l0aW9uID0gUG9zaXRpb24obGluZV9udW1iZXIsIG1hdGNoX2Z1bmN0aW9uLmVuZCgxKSkKLSAg
ICAgICAgICAgIGNsb3NlX3Jlc3VsdCA9IGNsb3NlX2V4cHJlc3Npb24oY2xlYW5fbGluZXMsIGxp
bmVfbnVtYmVyLCBwYXJhbWV0ZXJfc3RhcnRfcG9zaXRpb24uY29sdW1uKQotICAgICAgICAgICAg
aWYgY2xvc2VfcmVzdWx0WzFdID09IGxlbihjbGVhbl9saW5lcy5lbGlkZWQpOgorICAgICAgICAg
ICAgcGFyYW1ldGVyX2VuZF9wb3NpdGlvbiA9IGNsb3NlX2V4cHJlc3Npb24oY2xlYW5fbGluZXMu
ZWxpZGVkLCBwYXJhbWV0ZXJfc3RhcnRfcG9zaXRpb24pCisgICAgICAgICAgICBpZiBwYXJhbWV0
ZXJfZW5kX3Bvc2l0aW9uLnJvdyA9PSBsZW4oY2xlYW5fbGluZXMuZWxpZGVkKToKICAgICAgICAg
ICAgICAgICAjIE5vIGVuZCB3YXMgZm91bmQuCiAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAg
ICAgICAgICBwYXJhbWV0ZXJfZW5kX3Bvc2l0aW9uID0gUG9zaXRpb24oY2xvc2VfcmVzdWx0WzFd
LCBjbG9zZV9yZXN1bHRbMl0pCiAKICAgICAgICAgICAgIGlzX2RlY2xhcmF0aW9uID0gYm9vbChz
ZWFyY2gocideW157XSo7Jywgc3RhcnRfbGluZSkpCiAgICAgICAgICAgICBpZiBpc19kZWNsYXJh
dGlvbjoKICAgICAgICAgICAgICAgICBlbmRpbmdfbGluZV9udW1iZXIgPSBzdGFydF9saW5lX251
bWJlcgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBvcGVuX2JyYWNlX2luZGV4
ID0gc3RhcnRfbGluZS5maW5kKCd7JykKLSAgICAgICAgICAgICAgICBlbmRpbmdfbGluZV9udW1i
ZXIgPSBjbG9zZV9leHByZXNzaW9uKGNsZWFuX2xpbmVzLCBzdGFydF9saW5lX251bWJlciwgb3Bl
bl9icmFjZV9pbmRleClbMV0KKyAgICAgICAgICAgICAgICBlbmRpbmdfbGluZV9udW1iZXIgPSBj
bG9zZV9leHByZXNzaW9uKGNsZWFuX2xpbmVzLmVsaWRlZCwgUG9zaXRpb24oc3RhcnRfbGluZV9u
dW1iZXIsIG9wZW5fYnJhY2VfaW5kZXgpKS5yb3cKICAgICAgICAgICAgIGZ1bmN0aW9uX3N0YXRl
LmJlZ2luKGZ1bmN0aW9uLCBzdGFydF9saW5lX251bWJlciwgZW5kaW5nX2xpbmVfbnVtYmVyLCBp
c19kZWNsYXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRl
cl9zdGFydF9wb3NpdGlvbiwgcGFyYW1ldGVyX2VuZF9wb3NpdGlvbiwgY2xlYW5fbGluZXMpCiAg
ICAgICAgICAgICByZXR1cm4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkKaW5kZXggZDM5ZDJiYTgyOWJlOGRkMTcyY2JiM2Iz
MjBiMzAyNjEwOWNjYmJmNS4uODZiMzk5YjhjZmU1OTQ5N2RlNzM3YmFmMTdjNWUwMDgwMWUyMTA2
NyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBf
dW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9j
cHBfdW5pdHRlc3QucHkKQEAgLTM0Miw2ICszNDIsMTQgQEAgY2xhc3MgQ3BwU3R5bGVUZXN0QmFz
ZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgJ0JsYW5rIGxpbmUgYXQgdGhl
IGVuZCBvZiBhIGNvZGUgYmxvY2suICBJcyB0aGlzIG5lZWRlZD8nCiAgICAgICAgICAgICAgICAg
JyAgW3doaXRlc3BhY2UvYmxhbmtfbGluZV0gWzNdJykpCiAKKyAgICBkZWYgYXNzZXJ0X3Bvc2l0
aW9uc19lcXVhbChzZWxmLCBwb3NpdGlvbiwgdHVwbGVfcG9zaXRpb24pOgorICAgICAgICAiIiJD
aGVja3MgaWYgdGhlIHR3byBwb3NpdGlvbnMgYXJlIGVxdWFsLgorCisgICAgICAgIHBvc2l0aW9u
OiBhIGNwcF9zdHlsZS5Qb3NpdGlvbiBvYmplY3QuCisgICAgICAgIHR1cGxlX3Bvc2l0aW9uOiBh
IHR1cGxlIChyb3csIGNvbHVtbikgdG8gY29tcGFyZSBhZ2FpbnN0LiIiIgorICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhwb3NpdGlvbiwgY3BwX3N0eWxlLlBvc2l0aW9uKHR1cGxlX3Bvc2l0aW9u
WzBdLCB0dXBsZV9wb3NpdGlvblsxXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICdwb3Np
dGlvbiAlcywgdHVwbGVfcG9zaXRpb24gJXMnICUgKHBvc2l0aW9uLCB0dXBsZV9wb3NpdGlvbikp
CisKIAogY2xhc3MgRnVuY3Rpb25EZXRlY3Rpb25UZXN0KENwcFN0eWxlVGVzdEJhc2UpOgogICAg
IGRlZiBwZXJmb3JtX2Z1bmN0aW9uX2RldGVjdGlvbihzZWxmLCBsaW5lcywgZnVuY3Rpb25faW5m
b3JtYXRpb24pOgpAQCAtNTIzLDYgKzUzMSwyMiBAQCBjbGFzcyBDcHBTdHlsZVRlc3QoQ3BwU3R5
bGVUZXN0QmFzZSk6CiAgICAgICAgIGNwcF9zdHlsZS5yZW1vdmVfbXVsdGlfbGluZV9jb21tZW50
c19mcm9tX3JhbmdlKGxpbmVzLCAxLCA0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbJ2En
LCAnLy8gZHVtbXknLCAnLy8gZHVtbXknLCAnLy8gZHVtbXknLCAnYiddLCBsaW5lcykKIAorICAg
IGRlZiB0ZXN0X3Bvc2l0aW9uKHNlbGYpOgorICAgICAgICBwb3NpdGlvbiA9IGNwcF9zdHlsZS5Q
b3NpdGlvbigzLCA0KQorICAgICAgICBzZWxmLmFzc2VydF9wb3NpdGlvbnNfZXF1YWwocG9zaXRp
b24sICgzLCA0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocG9zaXRpb24ucm93LCAzKQor
ICAgICAgICBzZWxmLmFzc2VydFRydWUocG9zaXRpb24gPiBjcHBfc3R5bGUuUG9zaXRpb24ocG9z
aXRpb24ucm93IC0gMSwgcG9zaXRpb24uY29sdW1uICsgMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShwb3NpdGlvbiA+IGNwcF9zdHlsZS5Qb3NpdGlvbihwb3NpdGlvbi5yb3csIHBvc2l0aW9u
LmNvbHVtbiAtIDEpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocG9zaXRpb24gPCBjcHBfc3R5
bGUuUG9zaXRpb24ocG9zaXRpb24ucm93LCBwb3NpdGlvbi5jb2x1bW4gKyAxKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKHBvc2l0aW9uIDwgY3BwX3N0eWxlLlBvc2l0aW9uKHBvc2l0aW9uLnJv
dyArIDEsIHBvc2l0aW9uLmNvbHVtbiAtIDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhw
b3NpdGlvbi5fX3N0cl9fKCksICcoMywgNCknKQorCisgICAgZGVmIHRlc3RfY2xvc2VfZXhwcmVz
c2lvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY3BwX3N0eWxlLlBvc2l0aW9u
KDEsIC0xKSwgY3BwX3N0eWxlLmNsb3NlX2V4cHJlc3Npb24oWycpKCddLCBjcHBfc3R5bGUuUG9z
aXRpb24oMCwgMSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjcHBfc3R5bGUuUG9zaXRp
b24oMSwgLTEpLCBjcHBfc3R5bGUuY2xvc2VfZXhwcmVzc2lvbihbJykgKCknXSwgY3BwX3N0eWxl
LlBvc2l0aW9uKDAsIDEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY3BwX3N0eWxlLlBv
c2l0aW9uKDAsIDQpLCBjcHBfc3R5bGUuY2xvc2VfZXhwcmVzc2lvbihbJylbKV0nXSwgY3BwX3N0
eWxlLlBvc2l0aW9uKDAsIDEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY3BwX3N0eWxl
LlBvc2l0aW9uKDAsIDUpLCBjcHBfc3R5bGUuY2xvc2VfZXhwcmVzc2lvbihbJ317fXt9J10sIGNw
cF9zdHlsZS5Qb3NpdGlvbigwLCAzKSkpCisKICAgICBkZWYgdGVzdF9zcGFjZXNfYXRfZW5kX29m
X2xpbmUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCiAgICAgICAgICAgICAnLy8g
SGVsbG8gdGhlcmUgJywK
</data>
<flag name="review"
          id="69997"
          type_id="1"
          status="+"
          setter="hamaji"
    />
          </attachment>
      

    </bug>

</bugzilla>