<?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>16002</bug_id>
          
          <creation_ts>2007-11-15 11:54:51 -0800</creation_ts>
          <short_desc>Load SVG (and other) UA StyleSheets dynamically when needed</short_desc>
          <delta_ts>2007-12-02 12:21:09 -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>Mac</rep_platform>
          <op_sys>OS X 10.4</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>15302</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>61315</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-11-15 11:54:51 -0800</bug_when>
    <thetext>Load SVG (and other) UA StyleSheets dynamically when needed

Hyatt would like to see a solution like this land before landing MathML support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62960</commentid>
    <comment_count>1</comment_count>
      <attachid>17645</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-12-02 08:05:00 -0800</bug_when>
    <thetext>Created attachment 17645
First attempt

This patch implements the lazy loading of the svg sheet. I think it is the only UA sheet yet which can be treated that way. Note that the const MediaQueryEvaluator
stuff is not essential, just seems clearer to me.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62966</commentid>
    <comment_count>2</comment_count>
      <attachid>17645</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-12-02 08:59:49 -0800</bug_when>
    <thetext>Comment on attachment 17645
First attempt

+static const MediaQueryEvaluator screenEval(&quot;screen&quot;);
+static const MediaQueryEvaluator printEval(&quot;print&quot;);

We can&apos;t have global objects with constructors like these in WebKit -- causes a performance problem, especially on Mac OS X. You can instead put create functions that return the objects.

+#if ENABLE(SVG)
+    if (e-&gt;isSVGElement() &amp;&amp; !svgSheet) {
+        // SVG rules.
+        svgSheet = parseUASheet(svgUserAgentStyleSheet);
+        defaultStyle-&gt;addRulesFromSheet(svgSheet, &amp;screenEval);
+        defaultPrintStyle-&gt;addRulesFromSheet(svgSheet, &amp;printEval);
+    }
+#endif
     int firstUARule = -1, lastUARule = -1;

I think you need a blank line after the #endif

review- because of the global initializers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62989</commentid>
    <comment_count>3</comment_count>
      <attachid>17652</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-12-02 10:03:47 -0800</bug_when>
    <thetext>Created attachment 17652
Fixing the global ctor problem

This should fix the global ctor efficiency problem.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63000</commentid>
    <comment_count>4</comment_count>
      <attachid>17652</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-12-02 10:17:58 -0800</bug_when>
    <thetext>Comment on attachment 17652
Fixing the global ctor problem

How does this fix the global constructor problem? I don&apos;t see any change in that part of the patch. Maybe you accidentally re-posted the same patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63006</commentid>
    <comment_count>5</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-12-02 10:40:52 -0800</bug_when>
    <thetext>Hi Darin,

(In reply to comment #4)
&gt; (From update of attachment 17652 [edit])
&gt; How does this fix the global constructor problem? I don&apos;t see any change in
&gt; that part of the patch. Maybe you accidentally re-posted the same patch?

Oops, you are right :( Will put up the one I intended.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63007</commentid>
    <comment_count>6</comment_count>
      <attachid>17653</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-12-02 10:43:25 -0800</bug_when>
    <thetext>Created attachment 17653
Really fix the global ctor problem

This is the patch I meant to address Darins issues with my first attempt, ignore the previous attachment.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63009</commentid>
    <comment_count>7</comment_count>
      <attachid>17653</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-12-02 10:50:28 -0800</bug_when>
    <thetext>Comment on attachment 17653
Really fix the global ctor problem

Looks fine, but I&apos;m not happy with the trailing underscore naming scheme. In the past we&apos;ve used the word static, like:

     static const MediaQueryEvaluator staticPrintEval(&quot;print&quot;);

Looks good. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63014</commentid>
    <comment_count>8</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-12-02 12:21:09 -0800</bug_when>
    <thetext>Landed in r28321.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17645</attachid>
            <date>2007-12-02 08:05:00 -0800</date>
            <delta_ts>2007-12-02 10:03:47 -0800</delta_ts>
            <desc>First attempt</desc>
            <filename>16002.diff</filename>
            <type>text/plain</type>
            <size>6761</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODMyMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMDctMTItMDIgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdBUk5JTkc6IE5P
IFRFU1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdFRAorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDAyCisgICAgICAgIExvYWQgU1ZHIChhbmQgb3RoZXIp
IFVBIFN0eWxlU2hlZXRzIGR5bmFtaWNhbGx5IHdoZW4gbmVlZGVkCisKKyAgICAgICAgTG9hZCBz
dmcgc2hlZXQgd2hlbiBuZWVkZWQuCisKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpDU1NTdHlsZVNlbGVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmxvYWREZWZhdWx0U3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1J1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KToKKwogMjAw
Ny0xMi0wMiAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIFRyeSBhbmQg
Zml4IHRoZSBXaW5kb3dzIGJ1aWxkLgpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJl
dmlzaW9uIDI4MzIwKQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE5OSw3ICsxOTksNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdHlwZWRlZiBI
YXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NSdWxlRGF0YUxpc3QqPiBBdG9tUnVsZU1hcDsK
ICAgICAKLSAgICB2b2lkIGFkZFJ1bGVzRnJvbVNoZWV0KENTU1N0eWxlU2hlZXQqLCBNZWRpYVF1
ZXJ5RXZhbHVhdG9yKiwgQ1NTU3R5bGVTZWxlY3RvciogPSAwKTsKKyAgICB2b2lkIGFkZFJ1bGVz
RnJvbVNoZWV0KENTU1N0eWxlU2hlZXQqLCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiwgQ1NT
U3R5bGVTZWxlY3RvciogPSAwKTsKICAgICAKICAgICB2b2lkIGFkZFJ1bGUoQ1NTU3R5bGVSdWxl
KiBydWxlLCBDU1NTZWxlY3Rvciogc2VsKTsKICAgICB2b2lkIGFkZFRvUnVsZVNldChBdG9taWNT
dHJpbmdJbXBsKiBrZXksIEF0b21SdWxlTWFwJiBtYXAsCkBAIC0yMzUsNiArMjM1LDkgQEAgQ1NT
U3R5bGVTaGVldCAqQ1NTU3R5bGVTZWxlY3Rvcjo6c3ZnU2hlZQogc3RhdGljIENTU1N0eWxlU2Vs
ZWN0b3I6OkVuY29kZWR1cmwgKmN1cnJlbnRFbmNvZGVkVVJMID0gMDsKIHN0YXRpYyBQc2V1ZG9T
dGF0ZSBwc2V1ZG9TdGF0ZTsKIAorc3RhdGljIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3Igc2Ny
ZWVuRXZhbCgic2NyZWVuIik7CitzdGF0aWMgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciBwcmlu
dEV2YWwoInByaW50Iik7CisKIENTU1N0eWxlU2VsZWN0b3I6OkNTU1N0eWxlU2VsZWN0b3IoRG9j
dW1lbnQqIGRvYywgY29uc3QgU3RyaW5nJiB1c2VyU3R5bGVTaGVldCwgU3R5bGVTaGVldExpc3Qg
KnN0eWxlU2hlZXRzLCBDU1NTdHlsZVNoZWV0KiBtYXBwZWRFbGVtZW50U2hlZXQsIGJvb2wgX3N0
cmljdFBhcnNpbmcsIGJvb2wgbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzKQogewogICAgIGluaXQo
KTsKQEAgLTI3Nyw3ICsyODAsNyBAQCBDU1NTdHlsZVNlbGVjdG9yOjpDU1NTdHlsZVNlbGVjdG9y
KERvY3VtCiAgICAgICAgIG1fdXNlclNoZWV0LT5wYXJzZVN0cmluZyh1c2VyU3R5bGVTaGVldCwg
c3RyaWN0UGFyc2luZyk7CiAKICAgICAgICAgbV91c2VyU3R5bGUgPSBuZXcgQ1NTUnVsZVNldCgp
OwotICAgICAgICBtX3VzZXJTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQobV91c2VyU2hlZXQuZ2V0
KCksIG1fbWVkaXVtLCB0aGlzKTsKKyAgICAgICAgbV91c2VyU3R5bGUtPmFkZFJ1bGVzRnJvbVNo
ZWV0KG1fdXNlclNoZWV0LmdldCgpLCAqbV9tZWRpdW0sIHRoaXMpOwogICAgIH0KIAogICAgIC8v
IGFkZCBzdHlsZXNoZWV0cyBmcm9tIGRvY3VtZW50CkBAIC0yODUsMTIgKzI4OCwxMiBAQCBDU1NT
dHlsZVNlbGVjdG9yOjpDU1NTdHlsZVNlbGVjdG9yKERvY3VtCiAgICAgCiAgICAgLy8gQWRkIHJ1
bGVzIGZyb20gZWxtZW50cyBsaWtlIFNWRydzIDxmb250LWZhY2U+CiAgICAgaWYgKG1hcHBlZEVs
ZW1lbnRTaGVldCkKLSAgICAgICAgbV9hdXRob3JTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQobWFw
cGVkRWxlbWVudFNoZWV0LCBtX21lZGl1bSwgdGhpcyk7CisgICAgICAgIG1fYXV0aG9yU3R5bGUt
PmFkZFJ1bGVzRnJvbVNoZWV0KG1hcHBlZEVsZW1lbnRTaGVldCwgKm1fbWVkaXVtLCB0aGlzKTsK
IAogICAgIERlcHJlY2F0ZWRQdHJMaXN0SXRlcmF0b3I8U3R5bGVTaGVldD4gaXQoc3R5bGVTaGVl
dHMtPnN0eWxlU2hlZXRzKTsKICAgICBmb3IgKDsgaXQuY3VycmVudCgpOyArK2l0KQogICAgICAg
ICBpZiAoaXQuY3VycmVudCgpLT5pc0NTU1N0eWxlU2hlZXQoKSAmJiAhaXQuY3VycmVudCgpLT5k
aXNhYmxlZCgpKQotICAgICAgICAgICAgbV9hdXRob3JTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQo
c3RhdGljX2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KGl0LmN1cnJlbnQoKSksIG1fbWVkaXVtLCB0aGlz
KTsKKyAgICAgICAgICAgIG1fYXV0aG9yU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHN0YXRpY19j
YXN0PENTU1N0eWxlU2hlZXQqPihpdC5jdXJyZW50KCkpLCAqbV9tZWRpdW0sIHRoaXMpOwogCiAg
ICAgLy8gSnVzdCBkZWxldGUgb3VyIGZvbnQgc2VsZWN0b3IgaWYgd2UgZW5kIHVwIHdpdGggbm90
aGluZyBidXQgaW52YWxpZCBAZm9udC1mYWNlIHJ1bGVzLgogICAgIGlmIChtX2ZvbnRTZWxlY3Rv
ciAmJiBtX2ZvbnRTZWxlY3Rvci0+aXNFbXB0eSgpKQpAQCAtMzU3LDI4ICszNjAsMTggQEAgdm9p
ZCBDU1NTdHlsZVNlbGVjdG9yOjpsb2FkRGVmYXVsdFN0eWxlKAogICAgIGRlZmF1bHRRdWlya3NT
dHlsZSA9IG5ldyBDU1NSdWxlU2V0OwogICAgIGRlZmF1bHRWaWV3U291cmNlU3R5bGUgPSBuZXcg
Q1NTUnVsZVNldDsKIAotICAgIE1lZGlhUXVlcnlFdmFsdWF0b3Igc2NyZWVuRXZhbCgic2NyZWVu
Iik7Ci0gICAgTWVkaWFRdWVyeUV2YWx1YXRvciBwcmludEV2YWwoInByaW50Iik7Ci0KICAgICAv
LyBTdHJpY3QtbW9kZSBydWxlcy4KICAgICBkZWZhdWx0U2hlZXQgPSBwYXJzZVVBU2hlZXQoaHRt
bDRVc2VyQWdlbnRTdHlsZVNoZWV0KTsKLSAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNo
ZWV0KGRlZmF1bHRTaGVldCwgJnNjcmVlbkV2YWwpOwotICAgIGRlZmF1bHRQcmludFN0eWxlLT5h
ZGRSdWxlc0Zyb21TaGVldChkZWZhdWx0U2hlZXQsICZwcmludEV2YWwpOwotCi0jaWYgRU5BQkxF
KFNWRykKLSAgICAvLyBTVkcgcnVsZXMuCi0gICAgc3ZnU2hlZXQgPSBwYXJzZVVBU2hlZXQoc3Zn
VXNlckFnZW50U3R5bGVTaGVldCk7Ci0gICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVl
dChzdmdTaGVldCwgJnNjcmVlbkV2YWwpOwotICAgIGRlZmF1bHRQcmludFN0eWxlLT5hZGRSdWxl
c0Zyb21TaGVldChzdmdTaGVldCwgJnByaW50RXZhbCk7Ci0jZW5kaWYKKyAgICBkZWZhdWx0U3R5
bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGRlZmF1bHRTaGVldCwgc2NyZWVuRXZhbCk7CisgICAgZGVm
YXVsdFByaW50U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGRlZmF1bHRTaGVldCwgcHJpbnRFdmFs
KTsKIAogICAgIC8vIFF1aXJrcy1tb2RlIHJ1bGVzLgogICAgIHF1aXJrc1NoZWV0ID0gcGFyc2VV
QVNoZWV0KHF1aXJrc1VzZXJBZ2VudFN0eWxlU2hlZXQpOwotICAgIGRlZmF1bHRRdWlya3NTdHls
ZS0+YWRkUnVsZXNGcm9tU2hlZXQocXVpcmtzU2hlZXQsICZzY3JlZW5FdmFsKTsKKyAgICBkZWZh
dWx0UXVpcmtzU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHF1aXJrc1NoZWV0LCBzY3JlZW5FdmFs
KTsKICAgICAKICAgICAvLyBWaWV3IHNvdXJjZSBydWxlcy4KICAgICB2aWV3U291cmNlU2hlZXQg
PSBwYXJzZVVBU2hlZXQoc291cmNlVXNlckFnZW50U3R5bGVTaGVldCk7Ci0gICAgZGVmYXVsdFZp
ZXdTb3VyY2VTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQodmlld1NvdXJjZVNoZWV0LCAmc2NyZWVu
RXZhbCk7CisgICAgZGVmYXVsdFZpZXdTb3VyY2VTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQodmll
d1NvdXJjZVNoZWV0LCBzY3JlZW5FdmFsKTsKIH0KIAogdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpt
YXRjaFJ1bGVzKENTU1J1bGVTZXQqIHJ1bGVzLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxh
c3RSdWxlSW5kZXgpCkBAIC04MjcsNiArODIwLDE0IEBAIFJlbmRlclN0eWxlKiBDU1NTdHlsZVNl
bGVjdG9yOjpzdHlsZUZvckUKICAgICBlbHNlCiAgICAgICAgIHBhcmVudFN0eWxlID0gc3R5bGU7
CiAKKyNpZiBFTkFCTEUoU1ZHKQorICAgIGlmIChlLT5pc1NWR0VsZW1lbnQoKSAmJiAhc3ZnU2hl
ZXQpIHsKKyAgICAgICAgLy8gU1ZHIHJ1bGVzLgorICAgICAgICBzdmdTaGVldCA9IHBhcnNlVUFT
aGVldChzdmdVc2VyQWdlbnRTdHlsZVNoZWV0KTsKKyAgICAgICAgZGVmYXVsdFN0eWxlLT5hZGRS
dWxlc0Zyb21TaGVldChzdmdTaGVldCwgJnNjcmVlbkV2YWwpOworICAgICAgICBkZWZhdWx0UHJp
bnRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoc3ZnU2hlZXQsICZwcmludEV2YWwpOworICAgIH0K
KyNlbmRpZgogICAgIGludCBmaXJzdFVBUnVsZSA9IC0xLCBsYXN0VUFSdWxlID0gLTE7CiAgICAg
aW50IGZpcnN0VXNlclJ1bGUgPSAtMSwgbGFzdFVzZXJSdWxlID0gLTE7CiAgICAgaW50IGZpcnN0
QXV0aG9yUnVsZSA9IC0xLCBsYXN0QXV0aG9yUnVsZSA9IC0xOwpAQCAtMTY5MSwxNCArMTY5Miwx
NCBAQCB2b2lkIENTU1J1bGVTZXQ6OmFkZFJ1bGUoQ1NTU3R5bGVSdWxlKiByCiAgICAgICAgIG1f
dW5pdmVyc2FsUnVsZXMtPmFwcGVuZChtX3J1bGVDb3VudCsrLCBydWxlLCBzZWwpOwogfQogCi12
b2lkIENTU1J1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KENTU1N0eWxlU2hlZXQqIHNoZWV0LCAg
TWVkaWFRdWVyeUV2YWx1YXRvciogbWVkaXVtLCBDU1NTdHlsZVNlbGVjdG9yKiBzdHlsZVNlbGVj
dG9yKQordm9pZCBDU1NSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVldChDU1NTdHlsZVNoZWV0KiBz
aGVldCwgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciAmbWVkaXVtLCBDU1NTdHlsZVNlbGVjdG9y
KiBzdHlsZVNlbGVjdG9yKQogewogICAgIGlmICghc2hlZXQgfHwgIXNoZWV0LT5pc0NTU1N0eWxl
U2hlZXQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTm8gbWVkaWEgaW1wbGllcyAiYWxs
IiwgYnV0IGlmIGEgbWVkaWEgbGlzdCBleGlzdHMgaXQgbXVzdAogICAgIC8vIGNvbnRhaW4gb3Vy
IGN1cnJlbnQgbWVkaXVtCi0gICAgaWYgKHNoZWV0LT5tZWRpYSgpICYmICFtZWRpdW0tPmV2YWwo
c2hlZXQtPm1lZGlhKCkpKQorICAgIGlmIChzaGVldC0+bWVkaWEoKSAmJiAhbWVkaXVtLmV2YWwo
c2hlZXQtPm1lZGlhKCkpKQogICAgICAgICByZXR1cm47IC8vIHRoZSBzdHlsZSBzaGVldCBkb2Vz
bid0IGFwcGx5CiAKICAgICBpbnQgbGVuID0gc2hlZXQtPmxlbmd0aCgpOwpAQCAtMTcxMiwxNCAr
MTcxMywxNCBAQCB2b2lkIENTU1J1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KENTU1N0CiAgICAg
ICAgIH0KICAgICAgICAgZWxzZSBpZiAoaXRlbS0+aXNJbXBvcnRSdWxlKCkpIHsKICAgICAgICAg
ICAgIENTU0ltcG9ydFJ1bGUqIGltcG9ydCA9IHN0YXRpY19jYXN0PENTU0ltcG9ydFJ1bGUqPihp
dGVtKTsKLSAgICAgICAgICAgIGlmICghaW1wb3J0LT5tZWRpYSgpIHx8IG1lZGl1bS0+ZXZhbChp
bXBvcnQtPm1lZGlhKCkpKQorICAgICAgICAgICAgaWYgKCFpbXBvcnQtPm1lZGlhKCkgfHwgbWVk
aXVtLmV2YWwoaW1wb3J0LT5tZWRpYSgpKSkKICAgICAgICAgICAgICAgICBhZGRSdWxlc0Zyb21T
aGVldChpbXBvcnQtPnN0eWxlU2hlZXQoKSwgbWVkaXVtLCBzdHlsZVNlbGVjdG9yKTsKICAgICAg
ICAgfQogICAgICAgICBlbHNlIGlmIChpdGVtLT5pc01lZGlhUnVsZSgpKSB7CiAgICAgICAgICAg
ICBDU1NNZWRpYVJ1bGUqIHIgPSBzdGF0aWNfY2FzdDxDU1NNZWRpYVJ1bGUqPihpdGVtKTsKICAg
ICAgICAgICAgIENTU1J1bGVMaXN0KiBydWxlcyA9IHItPmNzc1J1bGVzKCk7CiAKLSAgICAgICAg
ICAgIGlmICgoIXItPm1lZGlhKCkgfHwgbWVkaXVtLT5ldmFsKHItPm1lZGlhKCkpKSAmJiBydWxl
cykgeworICAgICAgICAgICAgaWYgKCghci0+bWVkaWEoKSB8fCBtZWRpdW0uZXZhbChyLT5tZWRp
YSgpKSkgJiYgcnVsZXMpIHsKICAgICAgICAgICAgICAgICAvLyBUcmF2ZXJzZSBjaGlsZCBlbGVt
ZW50cyBvZiB0aGUgQG1lZGlhIHJ1bGUuCiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBq
ID0gMDsgaiA8IHJ1bGVzLT5sZW5ndGgoKTsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgIENT
U1J1bGUgKmNoaWxkSXRlbSA9IHJ1bGVzLT5pdGVtKGopOwo=
</data>
<flag name="review"
          id="7593"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17652</attachid>
            <date>2007-12-02 10:03:47 -0800</date>
            <delta_ts>2007-12-02 10:43:25 -0800</delta_ts>
            <desc>Fixing the global ctor problem</desc>
            <filename>16002.diff</filename>
            <type>text/plain</type>
            <size>6761</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODMyMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMDctMTItMDIgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdBUk5JTkc6IE5P
IFRFU1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdFRAorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDAyCisgICAgICAgIExvYWQgU1ZHIChhbmQgb3RoZXIp
IFVBIFN0eWxlU2hlZXRzIGR5bmFtaWNhbGx5IHdoZW4gbmVlZGVkCisKKyAgICAgICAgTG9hZCBz
dmcgc2hlZXQgd2hlbiBuZWVkZWQuCisKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpDU1NTdHlsZVNlbGVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmxvYWREZWZhdWx0U3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1J1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KToKKwogMjAw
Ny0xMi0wMiAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIFRyeSBhbmQg
Zml4IHRoZSBXaW5kb3dzIGJ1aWxkLgpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJl
dmlzaW9uIDI4MzIwKQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE5OSw3ICsxOTksNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdHlwZWRlZiBI
YXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NSdWxlRGF0YUxpc3QqPiBBdG9tUnVsZU1hcDsK
ICAgICAKLSAgICB2b2lkIGFkZFJ1bGVzRnJvbVNoZWV0KENTU1N0eWxlU2hlZXQqLCBNZWRpYVF1
ZXJ5RXZhbHVhdG9yKiwgQ1NTU3R5bGVTZWxlY3RvciogPSAwKTsKKyAgICB2b2lkIGFkZFJ1bGVz
RnJvbVNoZWV0KENTU1N0eWxlU2hlZXQqLCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiwgQ1NT
U3R5bGVTZWxlY3RvciogPSAwKTsKICAgICAKICAgICB2b2lkIGFkZFJ1bGUoQ1NTU3R5bGVSdWxl
KiBydWxlLCBDU1NTZWxlY3Rvciogc2VsKTsKICAgICB2b2lkIGFkZFRvUnVsZVNldChBdG9taWNT
dHJpbmdJbXBsKiBrZXksIEF0b21SdWxlTWFwJiBtYXAsCkBAIC0yMzUsNiArMjM1LDkgQEAgQ1NT
U3R5bGVTaGVldCAqQ1NTU3R5bGVTZWxlY3Rvcjo6c3ZnU2hlZQogc3RhdGljIENTU1N0eWxlU2Vs
ZWN0b3I6OkVuY29kZWR1cmwgKmN1cnJlbnRFbmNvZGVkVVJMID0gMDsKIHN0YXRpYyBQc2V1ZG9T
dGF0ZSBwc2V1ZG9TdGF0ZTsKIAorc3RhdGljIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3Igc2Ny
ZWVuRXZhbCgic2NyZWVuIik7CitzdGF0aWMgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciBwcmlu
dEV2YWwoInByaW50Iik7CisKIENTU1N0eWxlU2VsZWN0b3I6OkNTU1N0eWxlU2VsZWN0b3IoRG9j
dW1lbnQqIGRvYywgY29uc3QgU3RyaW5nJiB1c2VyU3R5bGVTaGVldCwgU3R5bGVTaGVldExpc3Qg
KnN0eWxlU2hlZXRzLCBDU1NTdHlsZVNoZWV0KiBtYXBwZWRFbGVtZW50U2hlZXQsIGJvb2wgX3N0
cmljdFBhcnNpbmcsIGJvb2wgbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzKQogewogICAgIGluaXQo
KTsKQEAgLTI3Nyw3ICsyODAsNyBAQCBDU1NTdHlsZVNlbGVjdG9yOjpDU1NTdHlsZVNlbGVjdG9y
KERvY3VtCiAgICAgICAgIG1fdXNlclNoZWV0LT5wYXJzZVN0cmluZyh1c2VyU3R5bGVTaGVldCwg
c3RyaWN0UGFyc2luZyk7CiAKICAgICAgICAgbV91c2VyU3R5bGUgPSBuZXcgQ1NTUnVsZVNldCgp
OwotICAgICAgICBtX3VzZXJTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQobV91c2VyU2hlZXQuZ2V0
KCksIG1fbWVkaXVtLCB0aGlzKTsKKyAgICAgICAgbV91c2VyU3R5bGUtPmFkZFJ1bGVzRnJvbVNo
ZWV0KG1fdXNlclNoZWV0LmdldCgpLCAqbV9tZWRpdW0sIHRoaXMpOwogICAgIH0KIAogICAgIC8v
IGFkZCBzdHlsZXNoZWV0cyBmcm9tIGRvY3VtZW50CkBAIC0yODUsMTIgKzI4OCwxMiBAQCBDU1NT
dHlsZVNlbGVjdG9yOjpDU1NTdHlsZVNlbGVjdG9yKERvY3VtCiAgICAgCiAgICAgLy8gQWRkIHJ1
bGVzIGZyb20gZWxtZW50cyBsaWtlIFNWRydzIDxmb250LWZhY2U+CiAgICAgaWYgKG1hcHBlZEVs
ZW1lbnRTaGVldCkKLSAgICAgICAgbV9hdXRob3JTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQobWFw
cGVkRWxlbWVudFNoZWV0LCBtX21lZGl1bSwgdGhpcyk7CisgICAgICAgIG1fYXV0aG9yU3R5bGUt
PmFkZFJ1bGVzRnJvbVNoZWV0KG1hcHBlZEVsZW1lbnRTaGVldCwgKm1fbWVkaXVtLCB0aGlzKTsK
IAogICAgIERlcHJlY2F0ZWRQdHJMaXN0SXRlcmF0b3I8U3R5bGVTaGVldD4gaXQoc3R5bGVTaGVl
dHMtPnN0eWxlU2hlZXRzKTsKICAgICBmb3IgKDsgaXQuY3VycmVudCgpOyArK2l0KQogICAgICAg
ICBpZiAoaXQuY3VycmVudCgpLT5pc0NTU1N0eWxlU2hlZXQoKSAmJiAhaXQuY3VycmVudCgpLT5k
aXNhYmxlZCgpKQotICAgICAgICAgICAgbV9hdXRob3JTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQo
c3RhdGljX2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KGl0LmN1cnJlbnQoKSksIG1fbWVkaXVtLCB0aGlz
KTsKKyAgICAgICAgICAgIG1fYXV0aG9yU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHN0YXRpY19j
YXN0PENTU1N0eWxlU2hlZXQqPihpdC5jdXJyZW50KCkpLCAqbV9tZWRpdW0sIHRoaXMpOwogCiAg
ICAgLy8gSnVzdCBkZWxldGUgb3VyIGZvbnQgc2VsZWN0b3IgaWYgd2UgZW5kIHVwIHdpdGggbm90
aGluZyBidXQgaW52YWxpZCBAZm9udC1mYWNlIHJ1bGVzLgogICAgIGlmIChtX2ZvbnRTZWxlY3Rv
ciAmJiBtX2ZvbnRTZWxlY3Rvci0+aXNFbXB0eSgpKQpAQCAtMzU3LDI4ICszNjAsMTggQEAgdm9p
ZCBDU1NTdHlsZVNlbGVjdG9yOjpsb2FkRGVmYXVsdFN0eWxlKAogICAgIGRlZmF1bHRRdWlya3NT
dHlsZSA9IG5ldyBDU1NSdWxlU2V0OwogICAgIGRlZmF1bHRWaWV3U291cmNlU3R5bGUgPSBuZXcg
Q1NTUnVsZVNldDsKIAotICAgIE1lZGlhUXVlcnlFdmFsdWF0b3Igc2NyZWVuRXZhbCgic2NyZWVu
Iik7Ci0gICAgTWVkaWFRdWVyeUV2YWx1YXRvciBwcmludEV2YWwoInByaW50Iik7Ci0KICAgICAv
LyBTdHJpY3QtbW9kZSBydWxlcy4KICAgICBkZWZhdWx0U2hlZXQgPSBwYXJzZVVBU2hlZXQoaHRt
bDRVc2VyQWdlbnRTdHlsZVNoZWV0KTsKLSAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNo
ZWV0KGRlZmF1bHRTaGVldCwgJnNjcmVlbkV2YWwpOwotICAgIGRlZmF1bHRQcmludFN0eWxlLT5h
ZGRSdWxlc0Zyb21TaGVldChkZWZhdWx0U2hlZXQsICZwcmludEV2YWwpOwotCi0jaWYgRU5BQkxF
KFNWRykKLSAgICAvLyBTVkcgcnVsZXMuCi0gICAgc3ZnU2hlZXQgPSBwYXJzZVVBU2hlZXQoc3Zn
VXNlckFnZW50U3R5bGVTaGVldCk7Ci0gICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVl
dChzdmdTaGVldCwgJnNjcmVlbkV2YWwpOwotICAgIGRlZmF1bHRQcmludFN0eWxlLT5hZGRSdWxl
c0Zyb21TaGVldChzdmdTaGVldCwgJnByaW50RXZhbCk7Ci0jZW5kaWYKKyAgICBkZWZhdWx0U3R5
bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGRlZmF1bHRTaGVldCwgc2NyZWVuRXZhbCk7CisgICAgZGVm
YXVsdFByaW50U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGRlZmF1bHRTaGVldCwgcHJpbnRFdmFs
KTsKIAogICAgIC8vIFF1aXJrcy1tb2RlIHJ1bGVzLgogICAgIHF1aXJrc1NoZWV0ID0gcGFyc2VV
QVNoZWV0KHF1aXJrc1VzZXJBZ2VudFN0eWxlU2hlZXQpOwotICAgIGRlZmF1bHRRdWlya3NTdHls
ZS0+YWRkUnVsZXNGcm9tU2hlZXQocXVpcmtzU2hlZXQsICZzY3JlZW5FdmFsKTsKKyAgICBkZWZh
dWx0UXVpcmtzU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHF1aXJrc1NoZWV0LCBzY3JlZW5FdmFs
KTsKICAgICAKICAgICAvLyBWaWV3IHNvdXJjZSBydWxlcy4KICAgICB2aWV3U291cmNlU2hlZXQg
PSBwYXJzZVVBU2hlZXQoc291cmNlVXNlckFnZW50U3R5bGVTaGVldCk7Ci0gICAgZGVmYXVsdFZp
ZXdTb3VyY2VTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQodmlld1NvdXJjZVNoZWV0LCAmc2NyZWVu
RXZhbCk7CisgICAgZGVmYXVsdFZpZXdTb3VyY2VTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQodmll
d1NvdXJjZVNoZWV0LCBzY3JlZW5FdmFsKTsKIH0KIAogdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpt
YXRjaFJ1bGVzKENTU1J1bGVTZXQqIHJ1bGVzLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxh
c3RSdWxlSW5kZXgpCkBAIC04MjcsNiArODIwLDE0IEBAIFJlbmRlclN0eWxlKiBDU1NTdHlsZVNl
bGVjdG9yOjpzdHlsZUZvckUKICAgICBlbHNlCiAgICAgICAgIHBhcmVudFN0eWxlID0gc3R5bGU7
CiAKKyNpZiBFTkFCTEUoU1ZHKQorICAgIGlmIChlLT5pc1NWR0VsZW1lbnQoKSAmJiAhc3ZnU2hl
ZXQpIHsKKyAgICAgICAgLy8gU1ZHIHJ1bGVzLgorICAgICAgICBzdmdTaGVldCA9IHBhcnNlVUFT
aGVldChzdmdVc2VyQWdlbnRTdHlsZVNoZWV0KTsKKyAgICAgICAgZGVmYXVsdFN0eWxlLT5hZGRS
dWxlc0Zyb21TaGVldChzdmdTaGVldCwgJnNjcmVlbkV2YWwpOworICAgICAgICBkZWZhdWx0UHJp
bnRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoc3ZnU2hlZXQsICZwcmludEV2YWwpOworICAgIH0K
KyNlbmRpZgogICAgIGludCBmaXJzdFVBUnVsZSA9IC0xLCBsYXN0VUFSdWxlID0gLTE7CiAgICAg
aW50IGZpcnN0VXNlclJ1bGUgPSAtMSwgbGFzdFVzZXJSdWxlID0gLTE7CiAgICAgaW50IGZpcnN0
QXV0aG9yUnVsZSA9IC0xLCBsYXN0QXV0aG9yUnVsZSA9IC0xOwpAQCAtMTY5MSwxNCArMTY5Miwx
NCBAQCB2b2lkIENTU1J1bGVTZXQ6OmFkZFJ1bGUoQ1NTU3R5bGVSdWxlKiByCiAgICAgICAgIG1f
dW5pdmVyc2FsUnVsZXMtPmFwcGVuZChtX3J1bGVDb3VudCsrLCBydWxlLCBzZWwpOwogfQogCi12
b2lkIENTU1J1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KENTU1N0eWxlU2hlZXQqIHNoZWV0LCAg
TWVkaWFRdWVyeUV2YWx1YXRvciogbWVkaXVtLCBDU1NTdHlsZVNlbGVjdG9yKiBzdHlsZVNlbGVj
dG9yKQordm9pZCBDU1NSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVldChDU1NTdHlsZVNoZWV0KiBz
aGVldCwgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciAmbWVkaXVtLCBDU1NTdHlsZVNlbGVjdG9y
KiBzdHlsZVNlbGVjdG9yKQogewogICAgIGlmICghc2hlZXQgfHwgIXNoZWV0LT5pc0NTU1N0eWxl
U2hlZXQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTm8gbWVkaWEgaW1wbGllcyAiYWxs
IiwgYnV0IGlmIGEgbWVkaWEgbGlzdCBleGlzdHMgaXQgbXVzdAogICAgIC8vIGNvbnRhaW4gb3Vy
IGN1cnJlbnQgbWVkaXVtCi0gICAgaWYgKHNoZWV0LT5tZWRpYSgpICYmICFtZWRpdW0tPmV2YWwo
c2hlZXQtPm1lZGlhKCkpKQorICAgIGlmIChzaGVldC0+bWVkaWEoKSAmJiAhbWVkaXVtLmV2YWwo
c2hlZXQtPm1lZGlhKCkpKQogICAgICAgICByZXR1cm47IC8vIHRoZSBzdHlsZSBzaGVldCBkb2Vz
bid0IGFwcGx5CiAKICAgICBpbnQgbGVuID0gc2hlZXQtPmxlbmd0aCgpOwpAQCAtMTcxMiwxNCAr
MTcxMywxNCBAQCB2b2lkIENTU1J1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KENTU1N0CiAgICAg
ICAgIH0KICAgICAgICAgZWxzZSBpZiAoaXRlbS0+aXNJbXBvcnRSdWxlKCkpIHsKICAgICAgICAg
ICAgIENTU0ltcG9ydFJ1bGUqIGltcG9ydCA9IHN0YXRpY19jYXN0PENTU0ltcG9ydFJ1bGUqPihp
dGVtKTsKLSAgICAgICAgICAgIGlmICghaW1wb3J0LT5tZWRpYSgpIHx8IG1lZGl1bS0+ZXZhbChp
bXBvcnQtPm1lZGlhKCkpKQorICAgICAgICAgICAgaWYgKCFpbXBvcnQtPm1lZGlhKCkgfHwgbWVk
aXVtLmV2YWwoaW1wb3J0LT5tZWRpYSgpKSkKICAgICAgICAgICAgICAgICBhZGRSdWxlc0Zyb21T
aGVldChpbXBvcnQtPnN0eWxlU2hlZXQoKSwgbWVkaXVtLCBzdHlsZVNlbGVjdG9yKTsKICAgICAg
ICAgfQogICAgICAgICBlbHNlIGlmIChpdGVtLT5pc01lZGlhUnVsZSgpKSB7CiAgICAgICAgICAg
ICBDU1NNZWRpYVJ1bGUqIHIgPSBzdGF0aWNfY2FzdDxDU1NNZWRpYVJ1bGUqPihpdGVtKTsKICAg
ICAgICAgICAgIENTU1J1bGVMaXN0KiBydWxlcyA9IHItPmNzc1J1bGVzKCk7CiAKLSAgICAgICAg
ICAgIGlmICgoIXItPm1lZGlhKCkgfHwgbWVkaXVtLT5ldmFsKHItPm1lZGlhKCkpKSAmJiBydWxl
cykgeworICAgICAgICAgICAgaWYgKCghci0+bWVkaWEoKSB8fCBtZWRpdW0uZXZhbChyLT5tZWRp
YSgpKSkgJiYgcnVsZXMpIHsKICAgICAgICAgICAgICAgICAvLyBUcmF2ZXJzZSBjaGlsZCBlbGVt
ZW50cyBvZiB0aGUgQG1lZGlhIHJ1bGUuCiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBq
ID0gMDsgaiA8IHJ1bGVzLT5sZW5ndGgoKTsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgIENT
U1J1bGUgKmNoaWxkSXRlbSA9IHJ1bGVzLT5pdGVtKGopOwo=
</data>
<flag name="review"
          id="7595"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17653</attachid>
            <date>2007-12-02 10:43:25 -0800</date>
            <delta_ts>2007-12-02 10:50:28 -0800</delta_ts>
            <desc>Really fix the global ctor problem</desc>
            <filename>16002-2.diff</filename>
            <type>text/plain</type>
            <size>6942</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODMyMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMDctMTItMDIgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdBUk5JTkc6IE5P
IFRFU1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdFRAorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDAyCisgICAgICAgIExvYWQgU1ZHIChhbmQgb3RoZXIp
IFVBIFN0eWxlU2hlZXRzIGR5bmFtaWNhbGx5IHdoZW4gbmVlZGVkCisKKyAgICAgICAgTG9hZCBz
dmcgc2hlZXQgd2hlbiBuZWVkZWQuCisKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpDU1NTdHlsZVNlbGVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmxvYWREZWZhdWx0U3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1J1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KToKKwogMjAw
Ny0xMi0wMiAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIFRyeSBhbmQg
Zml4IHRoZSBXaW5kb3dzIGJ1aWxkLgpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJl
dmlzaW9uIDI4MzIwKQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE5OSw3ICsxOTksNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdHlwZWRlZiBI
YXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NSdWxlRGF0YUxpc3QqPiBBdG9tUnVsZU1hcDsK
ICAgICAKLSAgICB2b2lkIGFkZFJ1bGVzRnJvbVNoZWV0KENTU1N0eWxlU2hlZXQqLCBNZWRpYVF1
ZXJ5RXZhbHVhdG9yKiwgQ1NTU3R5bGVTZWxlY3RvciogPSAwKTsKKyAgICB2b2lkIGFkZFJ1bGVz
RnJvbVNoZWV0KENTU1N0eWxlU2hlZXQqLCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiwgQ1NT
U3R5bGVTZWxlY3RvciogPSAwKTsKICAgICAKICAgICB2b2lkIGFkZFJ1bGUoQ1NTU3R5bGVSdWxl
KiBydWxlLCBDU1NTZWxlY3Rvciogc2VsKTsKICAgICB2b2lkIGFkZFRvUnVsZVNldChBdG9taWNT
dHJpbmdJbXBsKiBrZXksIEF0b21SdWxlTWFwJiBtYXAsCkBAIC0yMzUsNiArMjM1LDE4IEBAIENT
U1N0eWxlU2hlZXQgKkNTU1N0eWxlU2VsZWN0b3I6OnN2Z1NoZWUKIHN0YXRpYyBDU1NTdHlsZVNl
bGVjdG9yOjpFbmNvZGVkdXJsICpjdXJyZW50RW5jb2RlZFVSTCA9IDA7CiBzdGF0aWMgUHNldWRv
U3RhdGUgcHNldWRvU3RhdGU7CiAKK3N0YXRpYyBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiBz
Y3JlZW5FdmFsKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciBzY3Jl
ZW5FdmFsXygic2NyZWVuIik7CisgICAgcmV0dXJuIHNjcmVlbkV2YWxfOworfQorCitzdGF0aWMg
Y29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgcHJpbnRFdmFsKCkKK3sKKyAgICBzdGF0aWMgY29u
c3QgTWVkaWFRdWVyeUV2YWx1YXRvciBwcmludEV2YWxfKCJwcmludCIpOworICAgIHJldHVybiBw
cmludEV2YWxfOworfQorCiBDU1NTdHlsZVNlbGVjdG9yOjpDU1NTdHlsZVNlbGVjdG9yKERvY3Vt
ZW50KiBkb2MsIGNvbnN0IFN0cmluZyYgdXNlclN0eWxlU2hlZXQsIFN0eWxlU2hlZXRMaXN0ICpz
dHlsZVNoZWV0cywgQ1NTU3R5bGVTaGVldCogbWFwcGVkRWxlbWVudFNoZWV0LCBib29sIF9zdHJp
Y3RQYXJzaW5nLCBib29sIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcykKIHsKICAgICBpbml0KCk7
CkBAIC0yNzcsNyArMjg5LDcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6Q1NTU3R5bGVTZWxlY3RvcihE
b2N1bQogICAgICAgICBtX3VzZXJTaGVldC0+cGFyc2VTdHJpbmcodXNlclN0eWxlU2hlZXQsIHN0
cmljdFBhcnNpbmcpOwogCiAgICAgICAgIG1fdXNlclN0eWxlID0gbmV3IENTU1J1bGVTZXQoKTsK
LSAgICAgICAgbV91c2VyU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KG1fdXNlclNoZWV0LmdldCgp
LCBtX21lZGl1bSwgdGhpcyk7CisgICAgICAgIG1fdXNlclN0eWxlLT5hZGRSdWxlc0Zyb21TaGVl
dChtX3VzZXJTaGVldC5nZXQoKSwgKm1fbWVkaXVtLCB0aGlzKTsKICAgICB9CiAKICAgICAvLyBh
ZGQgc3R5bGVzaGVldHMgZnJvbSBkb2N1bWVudApAQCAtMjg1LDEyICsyOTcsMTIgQEAgQ1NTU3R5
bGVTZWxlY3Rvcjo6Q1NTU3R5bGVTZWxlY3RvcihEb2N1bQogICAgIAogICAgIC8vIEFkZCBydWxl
cyBmcm9tIGVsbWVudHMgbGlrZSBTVkcncyA8Zm9udC1mYWNlPgogICAgIGlmIChtYXBwZWRFbGVt
ZW50U2hlZXQpCi0gICAgICAgIG1fYXV0aG9yU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KG1hcHBl
ZEVsZW1lbnRTaGVldCwgbV9tZWRpdW0sIHRoaXMpOworICAgICAgICBtX2F1dGhvclN0eWxlLT5h
ZGRSdWxlc0Zyb21TaGVldChtYXBwZWRFbGVtZW50U2hlZXQsICptX21lZGl1bSwgdGhpcyk7CiAK
ICAgICBEZXByZWNhdGVkUHRyTGlzdEl0ZXJhdG9yPFN0eWxlU2hlZXQ+IGl0KHN0eWxlU2hlZXRz
LT5zdHlsZVNoZWV0cyk7CiAgICAgZm9yICg7IGl0LmN1cnJlbnQoKTsgKytpdCkKICAgICAgICAg
aWYgKGl0LmN1cnJlbnQoKS0+aXNDU1NTdHlsZVNoZWV0KCkgJiYgIWl0LmN1cnJlbnQoKS0+ZGlz
YWJsZWQoKSkKLSAgICAgICAgICAgIG1fYXV0aG9yU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHN0
YXRpY19jYXN0PENTU1N0eWxlU2hlZXQqPihpdC5jdXJyZW50KCkpLCBtX21lZGl1bSwgdGhpcyk7
CisgICAgICAgICAgICBtX2F1dGhvclN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChzdGF0aWNfY2Fz
dDxDU1NTdHlsZVNoZWV0Kj4oaXQuY3VycmVudCgpKSwgKm1fbWVkaXVtLCB0aGlzKTsKIAogICAg
IC8vIEp1c3QgZGVsZXRlIG91ciBmb250IHNlbGVjdG9yIGlmIHdlIGVuZCB1cCB3aXRoIG5vdGhp
bmcgYnV0IGludmFsaWQgQGZvbnQtZmFjZSBydWxlcy4KICAgICBpZiAobV9mb250U2VsZWN0b3Ig
JiYgbV9mb250U2VsZWN0b3ItPmlzRW1wdHkoKSkKQEAgLTM1NywyOCArMzY5LDE4IEBAIHZvaWQg
Q1NTU3R5bGVTZWxlY3Rvcjo6bG9hZERlZmF1bHRTdHlsZSgKICAgICBkZWZhdWx0UXVpcmtzU3R5
bGUgPSBuZXcgQ1NTUnVsZVNldDsKICAgICBkZWZhdWx0Vmlld1NvdXJjZVN0eWxlID0gbmV3IENT
U1J1bGVTZXQ7CiAKLSAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHNjcmVlbkV2YWwoInNjcmVlbiIp
OwotICAgIE1lZGlhUXVlcnlFdmFsdWF0b3IgcHJpbnRFdmFsKCJwcmludCIpOwotCiAgICAgLy8g
U3RyaWN0LW1vZGUgcnVsZXMuCiAgICAgZGVmYXVsdFNoZWV0ID0gcGFyc2VVQVNoZWV0KGh0bWw0
VXNlckFnZW50U3R5bGVTaGVldCk7Ci0gICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVl
dChkZWZhdWx0U2hlZXQsICZzY3JlZW5FdmFsKTsKLSAgICBkZWZhdWx0UHJpbnRTdHlsZS0+YWRk
UnVsZXNGcm9tU2hlZXQoZGVmYXVsdFNoZWV0LCAmcHJpbnRFdmFsKTsKLQotI2lmIEVOQUJMRShT
VkcpCi0gICAgLy8gU1ZHIHJ1bGVzLgotICAgIHN2Z1NoZWV0ID0gcGFyc2VVQVNoZWV0KHN2Z1Vz
ZXJBZ2VudFN0eWxlU2hlZXQpOwotICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQo
c3ZnU2hlZXQsICZzY3JlZW5FdmFsKTsKLSAgICBkZWZhdWx0UHJpbnRTdHlsZS0+YWRkUnVsZXNG
cm9tU2hlZXQoc3ZnU2hlZXQsICZwcmludEV2YWwpOwotI2VuZGlmCisgICAgZGVmYXVsdFN0eWxl
LT5hZGRSdWxlc0Zyb21TaGVldChkZWZhdWx0U2hlZXQsIHNjcmVlbkV2YWwoKSk7CisgICAgZGVm
YXVsdFByaW50U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGRlZmF1bHRTaGVldCwgcHJpbnRFdmFs
KCkpOwogCiAgICAgLy8gUXVpcmtzLW1vZGUgcnVsZXMuCiAgICAgcXVpcmtzU2hlZXQgPSBwYXJz
ZVVBU2hlZXQocXVpcmtzVXNlckFnZW50U3R5bGVTaGVldCk7Ci0gICAgZGVmYXVsdFF1aXJrc1N0
eWxlLT5hZGRSdWxlc0Zyb21TaGVldChxdWlya3NTaGVldCwgJnNjcmVlbkV2YWwpOworICAgIGRl
ZmF1bHRRdWlya3NTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQocXVpcmtzU2hlZXQsIHNjcmVlbkV2
YWwoKSk7CiAgICAgCiAgICAgLy8gVmlldyBzb3VyY2UgcnVsZXMuCiAgICAgdmlld1NvdXJjZVNo
ZWV0ID0gcGFyc2VVQVNoZWV0KHNvdXJjZVVzZXJBZ2VudFN0eWxlU2hlZXQpOwotICAgIGRlZmF1
bHRWaWV3U291cmNlU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHZpZXdTb3VyY2VTaGVldCwgJnNj
cmVlbkV2YWwpOworICAgIGRlZmF1bHRWaWV3U291cmNlU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0
KHZpZXdTb3VyY2VTaGVldCwgc2NyZWVuRXZhbCgpKTsKIH0KIAogdm9pZCBDU1NTdHlsZVNlbGVj
dG9yOjptYXRjaFJ1bGVzKENTU1J1bGVTZXQqIHJ1bGVzLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBp
bnQmIGxhc3RSdWxlSW5kZXgpCkBAIC04MjcsNiArODI5LDE1IEBAIFJlbmRlclN0eWxlKiBDU1NT
dHlsZVNlbGVjdG9yOjpzdHlsZUZvckUKICAgICBlbHNlCiAgICAgICAgIHBhcmVudFN0eWxlID0g
c3R5bGU7CiAKKyNpZiBFTkFCTEUoU1ZHKQorICAgIGlmIChlLT5pc1NWR0VsZW1lbnQoKSAmJiAh
c3ZnU2hlZXQpIHsKKyAgICAgICAgLy8gU1ZHIHJ1bGVzLgorICAgICAgICBzdmdTaGVldCA9IHBh
cnNlVUFTaGVldChzdmdVc2VyQWdlbnRTdHlsZVNoZWV0KTsKKyAgICAgICAgZGVmYXVsdFN0eWxl
LT5hZGRSdWxlc0Zyb21TaGVldChzdmdTaGVldCwgc2NyZWVuRXZhbCgpKTsKKyAgICAgICAgZGVm
YXVsdFByaW50U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHN2Z1NoZWV0LCBwcmludEV2YWwoKSk7
CisgICAgfQorI2VuZGlmCisKICAgICBpbnQgZmlyc3RVQVJ1bGUgPSAtMSwgbGFzdFVBUnVsZSA9
IC0xOwogICAgIGludCBmaXJzdFVzZXJSdWxlID0gLTEsIGxhc3RVc2VyUnVsZSA9IC0xOwogICAg
IGludCBmaXJzdEF1dGhvclJ1bGUgPSAtMSwgbGFzdEF1dGhvclJ1bGUgPSAtMTsKQEAgLTE2OTEs
MTQgKzE3MDIsMTQgQEAgdm9pZCBDU1NSdWxlU2V0OjphZGRSdWxlKENTU1N0eWxlUnVsZSogcgog
ICAgICAgICBtX3VuaXZlcnNhbFJ1bGVzLT5hcHBlbmQobV9ydWxlQ291bnQrKywgcnVsZSwgc2Vs
KTsKIH0KIAotdm9pZCBDU1NSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVldChDU1NTdHlsZVNoZWV0
KiBzaGVldCwgIE1lZGlhUXVlcnlFdmFsdWF0b3IqIG1lZGl1bSwgQ1NTU3R5bGVTZWxlY3Rvciog
c3R5bGVTZWxlY3RvcikKK3ZvaWQgQ1NTUnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQoQ1NTU3R5
bGVTaGVldCogc2hlZXQsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIG1lZGl1bSwgQ1NTU3R5
bGVTZWxlY3Rvciogc3R5bGVTZWxlY3RvcikKIHsKICAgICBpZiAoIXNoZWV0IHx8ICFzaGVldC0+
aXNDU1NTdHlsZVNoZWV0KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIE5vIG1lZGlhIGlt
cGxpZXMgImFsbCIsIGJ1dCBpZiBhIG1lZGlhIGxpc3QgZXhpc3RzIGl0IG11c3QKICAgICAvLyBj
b250YWluIG91ciBjdXJyZW50IG1lZGl1bQotICAgIGlmIChzaGVldC0+bWVkaWEoKSAmJiAhbWVk
aXVtLT5ldmFsKHNoZWV0LT5tZWRpYSgpKSkKKyAgICBpZiAoc2hlZXQtPm1lZGlhKCkgJiYgIW1l
ZGl1bS5ldmFsKHNoZWV0LT5tZWRpYSgpKSkKICAgICAgICAgcmV0dXJuOyAvLyB0aGUgc3R5bGUg
c2hlZXQgZG9lc24ndCBhcHBseQogCiAgICAgaW50IGxlbiA9IHNoZWV0LT5sZW5ndGgoKTsKQEAg
LTE3MTIsMTQgKzE3MjMsMTQgQEAgdm9pZCBDU1NSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVldChD
U1NTdAogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGl0ZW0tPmlzSW1wb3J0UnVsZSgpKSB7
CiAgICAgICAgICAgICBDU1NJbXBvcnRSdWxlKiBpbXBvcnQgPSBzdGF0aWNfY2FzdDxDU1NJbXBv
cnRSdWxlKj4oaXRlbSk7Ci0gICAgICAgICAgICBpZiAoIWltcG9ydC0+bWVkaWEoKSB8fCBtZWRp
dW0tPmV2YWwoaW1wb3J0LT5tZWRpYSgpKSkKKyAgICAgICAgICAgIGlmICghaW1wb3J0LT5tZWRp
YSgpIHx8IG1lZGl1bS5ldmFsKGltcG9ydC0+bWVkaWEoKSkpCiAgICAgICAgICAgICAgICAgYWRk
UnVsZXNGcm9tU2hlZXQoaW1wb3J0LT5zdHlsZVNoZWV0KCksIG1lZGl1bSwgc3R5bGVTZWxlY3Rv
cik7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoaXRlbS0+aXNNZWRpYVJ1bGUoKSkgewog
ICAgICAgICAgICAgQ1NTTWVkaWFSdWxlKiByID0gc3RhdGljX2Nhc3Q8Q1NTTWVkaWFSdWxlKj4o
aXRlbSk7CiAgICAgICAgICAgICBDU1NSdWxlTGlzdCogcnVsZXMgPSByLT5jc3NSdWxlcygpOwog
Ci0gICAgICAgICAgICBpZiAoKCFyLT5tZWRpYSgpIHx8IG1lZGl1bS0+ZXZhbChyLT5tZWRpYSgp
KSkgJiYgcnVsZXMpIHsKKyAgICAgICAgICAgIGlmICgoIXItPm1lZGlhKCkgfHwgbWVkaXVtLmV2
YWwoci0+bWVkaWEoKSkpICYmIHJ1bGVzKSB7CiAgICAgICAgICAgICAgICAgLy8gVHJhdmVyc2Ug
Y2hpbGQgZWxlbWVudHMgb2YgdGhlIEBtZWRpYSBydWxlLgogICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaiA9IDA7IGogPCBydWxlcy0+bGVuZ3RoKCk7IGorKykgewogICAgICAgICAgICAg
ICAgICAgICBDU1NSdWxlICpjaGlsZEl0ZW0gPSBydWxlcy0+aXRlbShqKTsK
</data>
<flag name="review"
          id="7596"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>