<?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>54360</bug_id>
          
          <creation_ts>2011-02-13 11:01:39 -0800</creation_ts>
          <short_desc>Enable fast path selector checking for child and subselector combinators</short_desc>
          <delta_ts>2011-02-15 07:14:25 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>hyatt</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>350413</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-02-13 11:01:39 -0800</bug_when>
    <thetext>Currently the fast path(CSSStyleSelector::SelectorChecker::fastCheckSelector) is enabled for descendant combinators only. It should be enabled for child and subselector combinators too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350418</commentid>
    <comment_count>1</comment_count>
      <attachid>82269</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-02-13 11:08:47 -0800</bug_when>
    <thetext>Created attachment 82269
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350730</commentid>
    <comment_count>2</comment_count>
      <attachid>82269</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-02-14 10:05:32 -0800</bug_when>
    <thetext>Comment on attachment 82269
patch

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

Are enough of these cases covered by existing tests?

&gt; Source/WebCore/css/CSSStyleSelector.cpp:2146
&gt; +template &lt;class SelectorChecker&gt;
&gt; +inline bool fastCheckSingleSelector(const CSSSelector*&amp; selector, const Element*&amp; element, const CSSSelector*&amp; topChildOrSubselector, const Element*&amp; topChildOrSubselectorMatchElement)

We can pass functions as template arguments. Wrapping each function in a class is unnecessary.

    template&lt;bool selectorChecker(const Element*, AtomicStringImpl*)&gt;

&gt; Source/WebCore/css/CSSStyleSelector.cpp:2149
&gt; +    while (element) {

I think this would read slightly better as a for loop.

&gt; Source/WebCore/css/CSSStyleSelector.cpp:2157
&gt; +            };

Excess semicolon here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350742</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-02-14 10:23:52 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 82269 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=82269&amp;action=review
&gt; 
&gt; Are enough of these cases covered by existing tests?

I think we have decent coverage, based on the tests I broke at different points.

&gt; We can pass functions as template arguments. Wrapping each function in a class is unnecessary.

Very true, will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351239</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-02-15 07:14:25 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/78556</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82269</attachid>
            <date>2011-02-13 11:08:47 -0800</date>
            <delta_ts>2011-02-14 10:05:32 -0800</delta_ts>
            <desc>patch</desc>
            <filename>fast-check-child-and-subselectors-2.patch</filename>
            <type>text/plain</type>
            <size>7131</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NDMxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDItMTMgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEVuYWJsZSBmYXN0IHBhdGggc2VsZWN0b3IgY2hlY2tpbmcgZm9y
IGNoaWxkIGFuZCBzdWJzZWxlY3RvciBjb21iaW5hdG9ycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQzNjAKKworICAgICAgICAqIGNzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzRmFzdENoZWNrYWJsZVNlbGVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OmZhc3RDaGVja1NpbmdsZVNlbGVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkNsYXNzQ2hlY2s6OmNoZWNrVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SWRD
aGVjazo6Y2hlY2tWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpUYWdDaGVjazo6Y2hlY2tWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6
OmZhc3RDaGVja1NlbGVjdG9yKToKKwogMjAxMS0wMi0xMyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA3ODMyMikKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjEzNCwxMyArMjEzNCw2OCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2VsZWN0b3JUYWdNYXRjaGVz
KGNvCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IoY29uc3QgQ1NT
U2VsZWN0b3IqIHNlbGVjdG9yKQogewogICAgIGZvciAoOyBzZWxlY3Rvcjsgc2VsZWN0b3IgPSBz
ZWxlY3Rvci0+dGFnSGlzdG9yeSgpKSB7Ci0gICAgICAgIGlmIChzZWxlY3Rvci0+cmVsYXRpb24o
KSAhPSBDU1NTZWxlY3Rvcjo6RGVzY2VuZGFudCkKKyAgICAgICAgaWYgKHNlbGVjdG9yLT5yZWxh
dGlvbigpICE9IENTU1NlbGVjdG9yOjpEZXNjZW5kYW50ICYmIHNlbGVjdG9yLT5yZWxhdGlvbigp
ICE9IENTU1NlbGVjdG9yOjpDaGlsZCAmJiBzZWxlY3Rvci0+cmVsYXRpb24oKSAhPSBDU1NTZWxl
Y3Rvcjo6U3ViU2VsZWN0b3IpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlm
IChzZWxlY3Rvci0+bV9tYXRjaCAhPSBDU1NTZWxlY3Rvcjo6Tm9uZSAmJiBzZWxlY3Rvci0+bV9t
YXRjaCAhPSBDU1NTZWxlY3Rvcjo6SWQgJiYgc2VsZWN0b3ItPm1fbWF0Y2ggIT0gQ1NTU2VsZWN0
b3I6OkNsYXNzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4g
dHJ1ZTsKIH0KKyAgICAKK3RlbXBsYXRlIDxjbGFzcyBTZWxlY3RvckNoZWNrZXI+CitpbmxpbmUg
Ym9vbCBmYXN0Q2hlY2tTaW5nbGVTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3RvciomIHNlbGVjdG9y
LCBjb25zdCBFbGVtZW50KiYgZWxlbWVudCwgY29uc3QgQ1NTU2VsZWN0b3IqJiB0b3BDaGlsZE9y
U3Vic2VsZWN0b3IsIGNvbnN0IEVsZW1lbnQqJiB0b3BDaGlsZE9yU3Vic2VsZWN0b3JNYXRjaEVs
ZW1lbnQpCit7CisgICAgQXRvbWljU3RyaW5nSW1wbCogdmFsdWUgPSBzZWxlY3Rvci0+dmFsdWUo
KS5pbXBsKCk7CisgICAgd2hpbGUgKGVsZW1lbnQpIHsKKyAgICAgICAgaWYgKFNlbGVjdG9yQ2hl
Y2tlcjo6Y2hlY2tWYWx1ZShlbGVtZW50LCB2YWx1ZSkgJiYgc2VsZWN0b3JUYWdNYXRjaGVzKGVs
ZW1lbnQsIHNlbGVjdG9yKSkgeworICAgICAgICAgICAgaWYgKHNlbGVjdG9yLT5yZWxhdGlvbigp
ID09IENTU1NlbGVjdG9yOjpEZXNjZW5kYW50KQorICAgICAgICAgICAgICAgIHRvcENoaWxkT3JT
dWJzZWxlY3RvciA9IDA7CisgICAgICAgICAgICBlbHNlIGlmICghdG9wQ2hpbGRPclN1YnNlbGVj
dG9yKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHNlbGVjdG9yLT5yZWxhdGlvbigpID09IENT
U1NlbGVjdG9yOjpDaGlsZCB8fCBzZWxlY3Rvci0+cmVsYXRpb24oKSA9PSBDU1NTZWxlY3Rvcjo6
U3ViU2VsZWN0b3IpOworICAgICAgICAgICAgICAgIHRvcENoaWxkT3JTdWJzZWxlY3RvciA9IHNl
bGVjdG9yOworICAgICAgICAgICAgICAgIHRvcENoaWxkT3JTdWJzZWxlY3Rvck1hdGNoRWxlbWVu
dCA9IGVsZW1lbnQ7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgaWYgKHNlbGVjdG9yLT5y
ZWxhdGlvbigpICE9IENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvcikKKyAgICAgICAgICAgICAgICBl
bGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpOworICAgICAgICAgICAgc2VsZWN0b3Ig
PSBzZWxlY3Rvci0+dGFnSGlzdG9yeSgpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKHRvcENoaWxkT3JTdWJzZWxlY3RvcikgeworICAgICAgICAgICAg
Ly8gQ2hpbGQgb3Igc3Vic2VsZWN0b3IgY2hlY2sgZmFpbGVkLgorICAgICAgICAgICAgLy8gSWYg
dGhlIG1hdGNoIGVsZW1lbnQgaXMgbnVsbCwgdG9wQ2hpbGRPclN1YnNlbGVjdG9yIHdhcyBhbHNv
IHRoZSB2ZXJ5IHRvcG1vc3Qgc2VsZWN0b3IgYW5kIGhhZCB0byBtYXRjaCAKKyAgICAgICAgICAg
IC8vIHRoZSBvcmlnaW5hbCBlbGVtZW50IHdlIHdlcmUgY2hlY2tpbmcuCisgICAgICAgICAgICBp
ZiAoIXRvcENoaWxkT3JTdWJzZWxlY3Rvck1hdGNoRWxlbWVudCkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAvLyBUaGVyZSBtYXkgYmUgb3RoZXIgbWF0Y2hlcyBk
b3duIHRoZSBhbmNlc3RvciBjaGFpbi4KKyAgICAgICAgICAgIC8vIFJld2luZCB0byB0aGUgdG9w
bW9zdCBjaGlsZCBvciBzdWJzZWxlY3RvciBhbmQgdGhlIGVsZW1lbnQgaXQgbWF0Y2hlZCwgY29u
dGludWUgY2hlY2tpbmcgYW5jZXN0b3JzLgorICAgICAgICAgICAgc2VsZWN0b3IgPSB0b3BDaGls
ZE9yU3Vic2VsZWN0b3I7CisgICAgICAgICAgICBlbGVtZW50ID0gdG9wQ2hpbGRPclN1YnNlbGVj
dG9yTWF0Y2hFbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7CisgICAgICAgICAgICB0b3BDaGlsZE9y
U3Vic2VsZWN0b3IgPSAwOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAg
ICAgICAgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsKKyAgICB9CisgICAgcmV0
dXJuIGZhbHNlOworfQorICAgIAorc3RydWN0IENsYXNzQ2hlY2sgeworICAgIHN0YXRpYyBib29s
IGNoZWNrVmFsdWUoY29uc3QgRWxlbWVudCogZWxlbWVudCwgQXRvbWljU3RyaW5nSW1wbCogdmFs
dWUpIAorICAgIHsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQtPmhhc0NsYXNzKCkgJiYgc3RhdGlj
X2Nhc3Q8Y29uc3QgU3R5bGVkRWxlbWVudCo+KGVsZW1lbnQpLT5jbGFzc05hbWVzKCkuY29udGFp
bnModmFsdWUpOworICAgIH0KK307CitzdHJ1Y3QgSWRDaGVjayB7CisgICAgc3RhdGljIGJvb2wg
Y2hlY2tWYWx1ZShjb25zdCBFbGVtZW50KiBlbGVtZW50LCBBdG9taWNTdHJpbmdJbXBsKiB2YWx1
ZSkgCisgICAgeworICAgICAgICByZXR1cm4gZWxlbWVudC0+aGFzSUQoKSAmJiBlbGVtZW50LT5p
ZEZvclN0eWxlUmVzb2x1dGlvbigpLmltcGwoKSA9PSB2YWx1ZTsKKyAgICB9Cit9Oworc3RydWN0
IFRhZ0NoZWNrIHsKKyAgICBzdGF0aWMgYm9vbCBjaGVja1ZhbHVlKGNvbnN0IEVsZW1lbnQqLCBB
dG9taWNTdHJpbmdJbXBsKikKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK307
CiAKIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpmYXN0Q2hlY2tTZWxl
Y3Rvcihjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IsIGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQp
CiB7CkBAIC0yMTUwLDQwICsyMjA1LDMwIEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0
b3JDaGVja2VyOjoKICAgICBpZiAoIXNlbGVjdG9yVGFnTWF0Y2hlcyhlbGVtZW50LCBzZWxlY3Rv
cikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGNvbnN0IENTU1NlbGVjdG9yKiB0b3BD
aGlsZE9yU3Vic2VsZWN0b3IgPSAwOworICAgIGNvbnN0IEVsZW1lbnQqIHRvcENoaWxkT3JTdWJz
ZWxlY3Rvck1hdGNoRWxlbWVudCA9IDA7CisgICAgaWYgKHNlbGVjdG9yLT5yZWxhdGlvbigpID09
IENTU1NlbGVjdG9yOjpDaGlsZCB8fCBzZWxlY3Rvci0+cmVsYXRpb24oKSA9PSBDU1NTZWxlY3Rv
cjo6U3ViU2VsZWN0b3IpCisgICAgICAgIHRvcENoaWxkT3JTdWJzZWxlY3RvciA9IHNlbGVjdG9y
OworCisgICAgaWYgKHNlbGVjdG9yLT5yZWxhdGlvbigpICE9IENTU1NlbGVjdG9yOjpTdWJTZWxl
Y3RvcikKKyAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsKKwogICAg
IHNlbGVjdG9yID0gc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKTsKLSAgICBpZiAoIXNlbGVjdG9yKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjb25zdCBFbGVtZW50KiBhbmNlc3RvciA9IGVsZW1l
bnQ7Ci0gICAgLy8gV2Uga25vdyB0aGlzIGNvbXBvdW5kIHNlbGVjdG9yIGhhcyBkZXNjZW5kYW50
IGNvbWJpbmF0b3JzIG9ubHkgYW5kIGFsbCBjb21wb25lbnRzIGFyZSBzaW1wbGUuCi0gICAgZm9y
ICg7IHNlbGVjdG9yOyBzZWxlY3RvciA9IHNlbGVjdG9yLT50YWdIaXN0b3J5KCkpIHsKLSAgICAg
ICAgQXRvbWljU3RyaW5nSW1wbCogdmFsdWU7CisKKyAgICAvLyBXZSBrbm93IHRoaXMgY29tcG91
bmQgc2VsZWN0b3IgaGFzIGRlc2NlbmRhbnQgYW5kIHN1YnNlbGVjdG9yIGNvbWJpbmF0b3JzIG9u
bHkgYW5kIGFsbCBjb21wb25lbnRzIGFyZSBzaW1wbGUuCisgICAgd2hpbGUgKHNlbGVjdG9yKSB7
CiAgICAgICAgIHN3aXRjaCAoc2VsZWN0b3ItPm1fbWF0Y2gpIHsKICAgICAgICAgY2FzZSBDU1NT
ZWxlY3Rvcjo6Q2xhc3M6Ci0gICAgICAgICAgICB2YWx1ZSA9IHNlbGVjdG9yLT52YWx1ZSgpLmlt
cGwoKTsKLSAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCEo
YW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50RWxlbWVudCgpKSkKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGNvbnN0IFN0eWxlZEVsZW1lbnQqIHN0
eWxlZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxjb25zdCBTdHlsZWRFbGVtZW50Kj4oYW5jZXN0b3Ip
OwotICAgICAgICAgICAgICAgIGlmIChhbmNlc3Rvci0+aGFzQ2xhc3MoKSAmJiBzdHlsZWRFbGVt
ZW50LT5jbGFzc05hbWVzKCkuY29udGFpbnModmFsdWUpICYmIHNlbGVjdG9yVGFnTWF0Y2hlcyhh
bmNlc3Rvciwgc2VsZWN0b3IpKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmICghZmFzdENoZWNrU2luZ2xlU2VsZWN0b3I8Q2xhc3NDaGVj
az4oc2VsZWN0b3IsIGVsZW1lbnQsIHRvcENoaWxkT3JTdWJzZWxlY3RvciwgdG9wQ2hpbGRPclN1
YnNlbGVjdG9yTWF0Y2hFbGVtZW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6SWQ6Ci0gICAgICAg
ICAgICB2YWx1ZSA9IHNlbGVjdG9yLT52YWx1ZSgpLmltcGwoKTsKLSAgICAgICAgICAgIHdoaWxl
ICh0cnVlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCEoYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFy
ZW50RWxlbWVudCgpKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgICAgIGlmIChhbmNlc3Rvci0+aGFzSUQoKSAmJiBhbmNlc3Rvci0+aWRGb3JTdHlsZVJl
c29sdXRpb24oKS5pbXBsKCkgPT0gdmFsdWUgJiYgc2VsZWN0b3JUYWdNYXRjaGVzKGFuY2VzdG9y
LCBzZWxlY3RvcikpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKCFmYXN0Q2hlY2tTaW5nbGVTZWxlY3RvcjxJZENoZWNrPihzZWxlY3Rv
ciwgZWxlbWVudCwgdG9wQ2hpbGRPclN1YnNlbGVjdG9yLCB0b3BDaGlsZE9yU3Vic2VsZWN0b3JN
YXRjaEVsZW1lbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpOb25lOgotICAgICAgICAgICAgd2hp
bGUgKHRydWUpIHsKLSAgICAgICAgICAgICAgICBpZiAoIShhbmNlc3RvciA9IGFuY2VzdG9yLT5w
YXJlbnRFbGVtZW50KCkpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgaWYgKHNlbGVjdG9yVGFnTWF0Y2hlcyhhbmNlc3Rvciwgc2VsZWN0b3IpKQot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
ICghZmFzdENoZWNrU2luZ2xlU2VsZWN0b3I8VGFnQ2hlY2s+KHNlbGVjdG9yLCBlbGVtZW50LCB0
b3BDaGlsZE9yU3Vic2VsZWN0b3IsIHRvcENoaWxkT3JTdWJzZWxlY3Rvck1hdGNoRWxlbWVudCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIxOTEs
NyArMjIzNiw2IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjoKICAg
ICB9CiAgICAgcmV0dXJuIHRydWU7CiB9Ci0gICAgCiAKIC8vIFJlY3Vyc2l2ZSBjaGVjayBvZiBz
ZWxlY3RvcnMgYW5kIGNvbWJpbmF0b3JzCiAvLyBJdCBjYW4gcmV0dXJuIDMgZGlmZmVyZW50IHZh
bHVlczoK
</data>
<flag name="review"
          id="73917"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>