<?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>28677</bug_id>
          
          <creation_ts>2009-08-24 03:25:51 -0700</creation_ts>
          <short_desc>Allow excluding certain plugins from loading</short_desc>
          <delta_ts>2009-09-23 23:57:29 -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 Misc.</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>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Marius Renn">damarvy</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>eric</cc>
    
    <cc>hausmann</cc>
    
    <cc>jam</cc>
    
    <cc>kenneth</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>142297</commentid>
    <comment_count>0</comment_count>
      <attachid>38475</attachid>
    <who name="Marius Renn">damarvy</who>
    <bug_when>2009-08-24 03:25:51 -0700</bug_when>
    <thetext>Created attachment 38475
Proposed patch to implement the plugin loading delegation described in the feature request.

(Note, this is a re-post as the original got lost in a bugzilla crash).

It is well-known that plugins can cause problems, in the worst case leading to a crash. Unfortunately, this can happen as early as plugin-loading, as code may be executed on the plugin during this stage. One way this can be worked around is by using the recently introduced patch to change the plugin directory. However, in some applications it may not be desirable to switch to a different directory. Instead, a client may wish to filter the list of plugins to load.

Therefore I propose adding a client callback class (or delegate), which allows filtering plugins based on its path or other attributes such as name, version, etc. I have included a proposed patch that implements this functionality, by introducing an abstract base class PluginDatabaseClient with two pure virtual methods shouldLoadPluginAtPath() and shouldLoadPluginPackage(). These are called in sequence, and if any of these return false, the current plugin is not loaded. For instance, if shouldLoadPluginAtPath() returns false, no further inspection of the plugin is performed. Such a client can be set (optionally) by calling setClient() on the PluginDatabase singleton instance. Note, that the instance must be created without populating as the following example shows (where myPluginLoaderClient denote some PluginDatabaseClient implementation):

PluginDatabase* db = PluginDatabase::installedPlugins(false); // Do not load plugins
db-&gt;setClient(myPluginLoaderClient);	// Set client instance
db-&gt;setPluginDirectories(PluginDatabase::defaultPluginDirectories());
db-&gt;refresh();	// Load plugins with client in place</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142623</commentid>
    <comment_count>1</comment_count>
      <attachid>38475</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-25 10:32:24 -0700</bug_when>
    <thetext>Comment on attachment 38475
Proposed patch to implement the plugin loading delegation described in the feature request.

I would probably have broken:
   if (!m_client || m_client-&gt;shouldLoadPluginAtPath(*it)) {
 121             RefPtr&lt;PluginPackage&gt; package = PluginPackage::createPackage(*it, lastModified);
 122             if (package) {
 123                 if ((!m_client || m_client-&gt;shouldLoadPluginPackage(package)) &amp;&amp; add(package))
 124                     pluginSetChanged = true;
 125                 package.release();
 126             }
 127         }
out into a little function to make early return possible (for when !package) for instance.  You&apos;d have to pass the Client* and the path, and likey return a PassRefPtr&lt;PluginPackage&gt;  It would get rid of the need for explicit release though.

Probably would look something like this:

RefPtr&lt;PluginPackage&gt; package = loadPluginAtPath(*it, m_client);
if (addPluginPackage(package.release(), this))
    pluginSetChanged = true;

Actually, I&apos;m not sure that&apos;s cleaner since you have to pass &quot;this&quot; in oder to get access to &quot;add()&quot;

Anyway, you can re-work that function if you&apos;d like, or it&apos;s OK as is.  But I&apos;m going to r- this for the wrong copyright here:

+ * Copyright (C) 2007 Apple Inc. All rights reserved.  Should show your copyright

Otherwise this looks fine to me.  I&apos;ll CC the plugin experts in case they have comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142625</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-25 10:33:28 -0700</bug_when>
    <thetext>CCing plugin people in case they have comment.  This in general looks fine to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143155</commentid>
    <comment_count>3</comment_count>
      <attachid>38675</attachid>
    <who name="Marius Renn">damarvy</who>
    <bug_when>2009-08-27 11:15:18 -0700</bug_when>
    <thetext>Created attachment 38675
Revised Patch (fixed copyright)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143792</commentid>
    <comment_count>4</comment_count>
      <attachid>38675</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-01 02:01:26 -0700</bug_when>
    <thetext>Comment on attachment 38675
Revised Patch (fixed copyright)

Hearing no complaints from the plugin experts, this still looks fine to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143795</commentid>
    <comment_count>5</comment_count>
      <attachid>38675</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-01 02:13:52 -0700</bug_when>
    <thetext>Comment on attachment 38675
Revised Patch (fixed copyright)

Clearing flags on attachment: 38675

Committed r47918: &lt;http://trac.webkit.org/changeset/47918&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143796</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-01 02:13:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143800</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-01 02:23:35 -0700</bug_when>
    <thetext>Looks like this broke the windows build. :(

Looks like the ChangeLog was also missing a bug number.  I should have caught that.

I&apos;m looking into the build break now, although I might just roll this out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143805</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-01 02:35:19 -0700</bug_when>
    <thetext>Committed r47920: &lt;http://trac.webkit.org/changeset/47920&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143822</commentid>
    <comment_count>9</comment_count>
    <who name="Marius Renn">damarvy</who>
    <bug_when>2009-09-01 03:11:41 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Committed r47920: &lt;http://trac.webkit.org/changeset/47920&gt;

Woha, sorry about that. I have to admit I hadn&apos;t tried compiling in Windows. I will be more careful in the future...

Anyway, I took a look at the patch to fix the Windows issue. I am a bit concerned about the release() call within the if() statement. If the expression &apos;(!m_client || m_client-&gt;shouldLoadPluginPackage(package.get()))&apos; evaluates to false, then will we not leak memory (as the add(package.release()) will not be called? Correct me if I am wrong though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143826</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-01 03:16:17 -0700</bug_when>
    <thetext>Your understanding is incorrect. :)  (Although you&apos;re certainly not alone in this misunderstanding!)

I suggest you read:
http://webkit.org/coding/RefPtr.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143836</commentid>
    <comment_count>11</comment_count>
    <who name="Marius Renn">damarvy</who>
    <bug_when>2009-09-01 03:41:14 -0700</bug_when>
    <thetext>Ah, that certainly clears up a few things. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143838</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-01 03:45:22 -0700</bug_when>
    <thetext>Sadly that document is now out of date.  RefCounted starts with a refCount() of 1 these days.  Hence all the PassRefPtr&lt;Foo&gt; Foo::create() methods you see.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143845</commentid>
    <comment_count>13</comment_count>
    <who name="Marius Renn">damarvy</who>
    <bug_when>2009-09-01 04:14:13 -0700</bug_when>
    <thetext>Hmmm... it seems the documentation may be more up-to-date than you give it credit for :-)

&quot;However, for efficiency and simplicity, the RefCounted class doesn&apos;t use a reference count of 0 at all. Objects are created with a reference count of 1.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147916</commentid>
    <comment_count>14</comment_count>
      <attachid>39720</attachid>
    <who name="Marius Renn">damarvy</who>
    <bug_when>2009-09-17 13:28:24 -0700</bug_when>
    <thetext>Created attachment 39720
Qt patch to allow overriding plugin loading

I have extended the plugin load delegation functionality to the Qt API layer, where I have added two virtual methods shouldLoadPluginAtPath() and shouldLoadPluginWithInfo() to the QWebPluginDatabase class. While the default implementation simply returns true, a subclass may do something more sophisticated, such as excluding certain plugins.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148853</commentid>
    <comment_count>15</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-09-21 14:55:50 -0700</bug_when>
    <thetext>New patch has been added, so I&apos;m reopening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148856</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-21 15:00:57 -0700</bug_when>
    <thetext>Generally we do one fix per bug.  Please open a new bug for new patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148990</commentid>
    <comment_count>17</comment_count>
    <who name="Marius Renn">damarvy</who>
    <bug_when>2009-09-22 02:10:27 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Generally we do one fix per bug.  Please open a new bug for new patches.

Got it. Shall I open a new bug for this one then? (Not sure as this is currently still open).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149662</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-23 22:35:14 -0700</bug_when>
    <thetext>Please make a new bug for the new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149684</commentid>
    <comment_count>19</comment_count>
      <attachid>39720</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-23 23:57:29 -0700</bug_when>
    <thetext>Comment on attachment 39720
Qt patch to allow overriding plugin loading

Removing r? now that this bug is closed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38475</attachid>
            <date>2009-08-24 03:25:51 -0700</date>
            <delta_ts>2009-08-27 11:15:18 -0700</delta_ts>
            <desc>Proposed patch to implement the plugin loading delegation described in the feature request.</desc>
            <filename>PluginLoadingPatch1.txt</filename>
            <type>text/plain</type>
            <size>6118</size>
            <attacher name="Marius Renn">damarvy</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NzcwMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMDktMDgtMjQgIE1hcml1cyBSZW5uICA8ZGFtYXJ2eUBnbWFpbC5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgZGVsZWdhdGUgdG8gUGx1Z2luRGF0YWJhc2UgdG8gZGlzYWJsZSBsb2FkaW5nIGNlcnRhaW4g
cGx1Z2lucy4KKyAgICAgICAgVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3Ugd2FudCB0byBsb2FkIGZy
b20gdGhlIHN0YW5kYXJkIHBsdWdpbgorICAgICAgICBkaXJlY3RvcnksIGJ1dCB3YW50IHRvIGV4
Y2x1ZGUgY2VydGFpbiBwbHVnaW5zLiBQbHVnaW5zIG1heSBiZQorICAgICAgICBleGNsdWRlZCBl
YXJseSBvbiBieSBuYW1lLCBzbyB0aGF0IG5vIHBsdWdpbiBjb2RlIGlzIGV4ZWN1dGVkICh3aGlj
aAorICAgICAgICBtYXkgaGF2ZSBjYXVzZWQgYSBjcmFzaCkuCisKKyAgICAgICAgKiBwbHVnaW5z
L1BsdWdpbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpQ
bHVnaW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6cmVmcmVz
aCk6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6UGx1Z2luRGF0YWJhc2U6OnNldENsaWVudCk6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5E
YXRhYmFzZUNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNl
Q2xpZW50Ojp+UGx1Z2luRGF0YWJhc2VDbGllbnQpOgorCiAyMDA5LTA4LTI0ICBLZW50IFRhbXVy
YSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRl
bC4KSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAkocmV2aXNpb24gNDc3MDIpCisr
KyBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIktVUkwuaCIKKyNp
bmNsdWRlICJQbHVnaW5EYXRhYmFzZUNsaWVudC5oIgogI2luY2x1ZGUgIlBsdWdpblBhY2thZ2Uu
aCIKICNpbmNsdWRlIDxzdGRsaWIuaD4KIApAQCAtMzYsNiArMzcsMTEgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UGx1Z2luUGFja2FnZT4g
PiBQbHVnaW5QYWNrYWdlQnlOYW1lTWFwOwogCitQbHVnaW5EYXRhYmFzZTo6UGx1Z2luRGF0YWJh
c2UoKQorICAgIDogbV9jbGllbnQoMCkKK3sKK30KKwogUGx1Z2luRGF0YWJhc2UqIFBsdWdpbkRh
dGFiYXNlOjppbnN0YWxsZWRQbHVnaW5zKGJvb2wgcG9wdWxhdGUpCiB7CiAgICAgc3RhdGljIFBs
dWdpbkRhdGFiYXNlKiBwbHVnaW5zID0gMDsKQEAgLTExMSw5ICsxMTcsMTQgQEAgYm9vbCBQbHVn
aW5EYXRhYmFzZTo6cmVmcmVzaCgpCiAgICAgICAgICAgICByZW1vdmUob2xkUGFja2FnZS5nZXQo
KSk7CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8UGx1Z2luUGFja2FnZT4gcGFja2FnZSA9
IFBsdWdpblBhY2thZ2U6OmNyZWF0ZVBhY2thZ2UoKml0LCBsYXN0TW9kaWZpZWQpOwotICAgICAg
ICBpZiAocGFja2FnZSAmJiBhZGQocGFja2FnZS5yZWxlYXNlKCkpKQotICAgICAgICAgICAgcGx1
Z2luU2V0Q2hhbmdlZCA9IHRydWU7CisgICAgICAgIGlmICghbV9jbGllbnQgfHwgbV9jbGllbnQt
PnNob3VsZExvYWRQbHVnaW5BdFBhdGgoKml0KSkgeworICAgICAgICAgICAgUmVmUHRyPFBsdWdp
blBhY2thZ2U+IHBhY2thZ2UgPSBQbHVnaW5QYWNrYWdlOjpjcmVhdGVQYWNrYWdlKCppdCwgbGFz
dE1vZGlmaWVkKTsKKyAgICAgICAgICAgIGlmIChwYWNrYWdlKSB7CisgICAgICAgICAgICAgICAg
aWYgKCghbV9jbGllbnQgfHwgbV9jbGllbnQtPnNob3VsZExvYWRQbHVnaW5QYWNrYWdlKHBhY2th
Z2UpKSAmJiBhZGQocGFja2FnZSkpCisgICAgICAgICAgICAgICAgICAgIHBsdWdpblNldENoYW5n
ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIHBhY2thZ2UucmVsZWFzZSgpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gQ2FjaGUgYWxsIHRoZSBwYXRocyB3ZSBm
b3VuZCB3aXRoIHRoZWlyIHRpbWVzdGFtcHMgZm9yIG5leHQgdGltZS4KSW5kZXg6IFdlYkNvcmUv
cGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5EYXRhYmFzZS5oCShyZXZpc2lvbiA0NzcwMikKKysrIFdlYkNvcmUvcGx1Z2lucy9QbHVn
aW5EYXRhYmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMiArNDAsMTUgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIEludFNpemU7CiAgICAgY2xh
c3MgS1VSTDsKKyAgICBjbGFzcyBQbHVnaW5EYXRhYmFzZUNsaWVudDsKICAgICBjbGFzcyBQbHVn
aW5QYWNrYWdlOwogCiAgICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxQbHVnaW5QYWNrYWdlPiwg
UGx1Z2luUGFja2FnZUhhc2g+IFBsdWdpblNldDsKIAogICAgIGNsYXNzIFBsdWdpbkRhdGFiYXNl
IHsKICAgICBwdWJsaWM6CisgICAgICAgIFBsdWdpbkRhdGFiYXNlKCk7CisKICAgICAgICAgLy8g
VGhlIGZpcnN0IGNhbGwgdG8gaW5zdGFsbGVkUGx1Z2lucyBjcmVhdGVzIHRoZSBwbHVnaW4gZGF0
YWJhc2UKICAgICAgICAgLy8gYW5kIGJ5IGRlZmF1bHQgcG9wdWxhdGVzIGl0IHdpdGggdGhlIHBs
dWdpbnMgaW5zdGFsbGVkIG9uIHRoZSBzeXN0ZW0uCiAgICAgICAgIC8vIEZvciB0ZXN0aW5nIHB1
cnBvc2VzLCBpdCBpcyBwb3NzaWJsZSB0byBub3QgcG9wdWxhdGUgdGhlIGRhdGFiYXNlCkBAIC03
Miw2ICs3NSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBtX3BsdWdpbkRp
cmVjdG9yaWVzID0gZGlyZWN0b3JpZXM7CiAgICAgICAgIH0KIAorICAgICAgICB2b2lkIHNldENs
aWVudChQbHVnaW5EYXRhYmFzZUNsaWVudCogY2xpZW50KQorICAgICAgICB7CisgICAgICAgICAg
ICBtX2NsaWVudCA9IGNsaWVudDsKKyAgICAgICAgfQorCiAgICAgICAgIHN0YXRpYyBWZWN0b3I8
U3RyaW5nPiBkZWZhdWx0UGx1Z2luRGlyZWN0b3JpZXMoKTsKICAgICAgICAgVmVjdG9yPFN0cmlu
Zz4gcGx1Z2luRGlyZWN0b3JpZXMoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbkRpcmVjdG9yaWVz
OyB9CiAKQEAgLTkxLDYgKzk5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBIYXNo
TWFwPFN0cmluZywgUmVmUHRyPFBsdWdpblBhY2thZ2U+ID4gbV9wbHVnaW5zQnlQYXRoOwogICAg
ICAgICBIYXNoTWFwPFN0cmluZywgdGltZV90PiBtX3BsdWdpblBhdGhzV2l0aFRpbWVzOwogICAg
ICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFBsdWdpblBhY2thZ2U+ID4gbV9wcmVmZXJyZWRQ
bHVnaW5zOworICAgICAgICBQbHVnaW5EYXRhYmFzZUNsaWVudCogbV9jbGllbnQ7CiAgICAgfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRh
dGFiYXNlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFi
YXNlQ2xpZW50LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJh
c2VDbGllbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpZm5kZWYgUGx1Z2luRGF0
YWJhc2VDbGllbnRfaAorI2RlZmluZSBQbHVnaW5EYXRhYmFzZUNsaWVudF9oCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFBsdWdpblBhY2thZ2U7CisgICAgY2xhc3MgU3RyaW5n
OworCisgICAgY2xhc3MgUGx1Z2luRGF0YWJhc2VDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgdmlydHVhbCB+UGx1Z2luRGF0YWJhc2VDbGllbnQoKSB7IH0KKyAgICAgICAgdmlydHVhbCBi
b29sIHNob3VsZExvYWRQbHVnaW5BdFBhdGgoY29uc3QgU3RyaW5nJikgPSAwOworICAgICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkTG9hZFBsdWdpblBhY2thZ2UoY29uc3QgUGx1Z2luUGFja2FnZSop
ID0gMDsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQbHVn
aW5EYXRhYmFzZUNsaWVudF9oCg==
</data>
<flag name="review"
          id="19490"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38675</attachid>
            <date>2009-08-27 11:15:18 -0700</date>
            <delta_ts>2009-09-01 02:13:52 -0700</delta_ts>
            <desc>Revised Patch (fixed copyright)</desc>
            <filename>PluginLoadingPatch2.txt</filename>
            <type>text/plain</type>
            <size>5943</size>
            <attacher name="Marius Renn">damarvy</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NzgyNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMDktMDgtMjcgIE1hcml1cyBSZW5uICA8ZGFtYXJ2eUBnbWFpbC5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgZGVsZWdhdGUgdG8gUGx1Z2luRGF0YWJhc2UgdG8gZGlzYWJsZSBsb2FkaW5nIGNlcnRhaW4g
cGx1Z2lucy4KKyAgICAgICAgVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3Ugd2FudCB0byBsb2FkIGZy
b20gdGhlIHN0YW5kYXJkIHBsdWdpbgorICAgICAgICBkaXJlY3RvcnksIGJ1dCB3YW50IHRvIGV4
Y2x1ZGUgY2VydGFpbiBwbHVnaW5zLiBQbHVnaW5zIG1heSBiZQorICAgICAgICBleGNsdWRlZCBl
YXJseSBvbiBieSBuYW1lLCBzbyB0aGF0IG5vIHBsdWdpbiBjb2RlIGlzIGV4ZWN1dGVkICh3aGlj
aAorICAgICAgICBtYXkgaGF2ZSBjYXVzZWQgYSBjcmFzaCkuCisKKyAgICAgICAgKiBwbHVnaW5z
L1BsdWdpbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpQ
bHVnaW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6cmVmcmVz
aCk6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6UGx1Z2luRGF0YWJhc2U6OnNldENsaWVudCk6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5E
YXRhYmFzZUNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNl
Q2xpZW50Ojp+UGx1Z2luRGF0YWJhc2VDbGllbnQpOgorCiAyMDA5LTA4LTI2ICBBbGV4ZXkgUHJv
c2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkZWxlIFBl
dGVyc29uLgpJbmRleDogV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCShyZXZpc2lvbiA0Nzgy
NSkKKysrIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiS1VSTC5o
IgorI2luY2x1ZGUgIlBsdWdpbkRhdGFiYXNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGx1Z2luUGFj
a2FnZS5oIgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogCkBAIC0zNiw2ICszNywxMSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxQbHVnaW5QYWNr
YWdlPiA+IFBsdWdpblBhY2thZ2VCeU5hbWVNYXA7CiAKK1BsdWdpbkRhdGFiYXNlOjpQbHVnaW5E
YXRhYmFzZSgpCisgICAgOiBtX2NsaWVudCgwKQoreworfQorCiBQbHVnaW5EYXRhYmFzZSogUGx1
Z2luRGF0YWJhc2U6Omluc3RhbGxlZFBsdWdpbnMoYm9vbCBwb3B1bGF0ZSkKIHsKICAgICBzdGF0
aWMgUGx1Z2luRGF0YWJhc2UqIHBsdWdpbnMgPSAwOwpAQCAtMTExLDkgKzExNywxNCBAQCBib29s
IFBsdWdpbkRhdGFiYXNlOjpyZWZyZXNoKCkKICAgICAgICAgICAgIHJlbW92ZShvbGRQYWNrYWdl
LmdldCgpKTsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxQbHVnaW5QYWNrYWdlPiBwYWNr
YWdlID0gUGx1Z2luUGFja2FnZTo6Y3JlYXRlUGFja2FnZSgqaXQsIGxhc3RNb2RpZmllZCk7Ci0g
ICAgICAgIGlmIChwYWNrYWdlICYmIGFkZChwYWNrYWdlLnJlbGVhc2UoKSkpCi0gICAgICAgICAg
ICBwbHVnaW5TZXRDaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgaWYgKCFtX2NsaWVudCB8fCBtX2Ns
aWVudC0+c2hvdWxkTG9hZFBsdWdpbkF0UGF0aCgqaXQpKSB7CisgICAgICAgICAgICBSZWZQdHI8
UGx1Z2luUGFja2FnZT4gcGFja2FnZSA9IFBsdWdpblBhY2thZ2U6OmNyZWF0ZVBhY2thZ2UoKml0
LCBsYXN0TW9kaWZpZWQpOworICAgICAgICAgICAgaWYgKHBhY2thZ2UpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoKCFtX2NsaWVudCB8fCBtX2NsaWVudC0+c2hvdWxkTG9hZFBsdWdpblBhY2thZ2Uo
cGFja2FnZSkpICYmIGFkZChwYWNrYWdlKSkKKyAgICAgICAgICAgICAgICAgICAgcGx1Z2luU2V0
Q2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgcGFja2FnZS5yZWxlYXNlKCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBDYWNoZSBhbGwgdGhlIHBhdGhz
IHdlIGZvdW5kIHdpdGggdGhlaXIgdGltZXN0YW1wcyBmb3IgbmV4dCB0aW1lLgpJbmRleDogV2Vi
Q29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVn
aW5zL1BsdWdpbkRhdGFiYXNlLmgJKHJldmlzaW9uIDQ3ODI1KQorKysgV2ViQ29yZS9wbHVnaW5z
L1BsdWdpbkRhdGFiYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDEyICs0MCwxNSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgSW50U2l6ZTsKICAg
ICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFBsdWdpbkRhdGFiYXNlQ2xpZW50OwogICAgIGNsYXNz
IFBsdWdpblBhY2thZ2U7CiAKICAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFBsdWdpblBhY2th
Z2U+LCBQbHVnaW5QYWNrYWdlSGFzaD4gUGx1Z2luU2V0OwogCiAgICAgY2xhc3MgUGx1Z2luRGF0
YWJhc2UgewogICAgIHB1YmxpYzoKKyAgICAgICAgUGx1Z2luRGF0YWJhc2UoKTsKKwogICAgICAg
ICAvLyBUaGUgZmlyc3QgY2FsbCB0byBpbnN0YWxsZWRQbHVnaW5zIGNyZWF0ZXMgdGhlIHBsdWdp
biBkYXRhYmFzZQogICAgICAgICAvLyBhbmQgYnkgZGVmYXVsdCBwb3B1bGF0ZXMgaXQgd2l0aCB0
aGUgcGx1Z2lucyBpbnN0YWxsZWQgb24gdGhlIHN5c3RlbS4KICAgICAgICAgLy8gRm9yIHRlc3Rp
bmcgcHVycG9zZXMsIGl0IGlzIHBvc3NpYmxlIHRvIG5vdCBwb3B1bGF0ZSB0aGUgZGF0YWJhc2UK
QEAgLTcyLDYgKzc1LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIG1fcGx1
Z2luRGlyZWN0b3JpZXMgPSBkaXJlY3RvcmllczsKICAgICAgICAgfQogCisgICAgICAgIHZvaWQg
c2V0Q2xpZW50KFBsdWdpbkRhdGFiYXNlQ2xpZW50KiBjbGllbnQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1fY2xpZW50ID0gY2xpZW50OworICAgICAgICB9CisKICAgICAgICAgc3RhdGljIFZl
Y3RvcjxTdHJpbmc+IGRlZmF1bHRQbHVnaW5EaXJlY3RvcmllcygpOwogICAgICAgICBWZWN0b3I8
U3RyaW5nPiBwbHVnaW5EaXJlY3RvcmllcygpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luRGlyZWN0
b3JpZXM7IH0KIApAQCAtOTEsNiArOTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UGx1Z2luUGFja2FnZT4gPiBtX3BsdWdpbnNCeVBhdGg7
CiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCB0aW1lX3Q+IG1fcGx1Z2luUGF0aHNXaXRoVGltZXM7
CiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UGx1Z2luUGFja2FnZT4gPiBtX3ByZWZl
cnJlZFBsdWdpbnM7CisgICAgICAgIFBsdWdpbkRhdGFiYXNlQ2xpZW50KiBtX2NsaWVudDsKICAg
ICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BsdWdpbnMvUGx1
Z2luRGF0YWJhc2VDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsdWdpbnMvUGx1Z2lu
RGF0YWJhc2VDbGllbnQuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5E
YXRhYmFzZUNsaWVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA3IE1hcml1cyBSZW5uIDxkYW1hcnZ5QGdtYWlsLmNvbT4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiBgYEFTIElTJycgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVECisgKiBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2lmbmRlZiBQbHVnaW5EYXRhYmFz
ZUNsaWVudF9oCisjZGVmaW5lIFBsdWdpbkRhdGFiYXNlQ2xpZW50X2gKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisgICAgY2xhc3MgUGx1Z2luUGFja2FnZTsKKyAgICBjbGFzcyBTdHJpbmc7CisK
KyAgICBjbGFzcyBQbHVnaW5EYXRhYmFzZUNsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2
aXJ0dWFsIH5QbHVnaW5EYXRhYmFzZUNsaWVudCgpIHsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkTG9hZFBsdWdpbkF0UGF0aChjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRMb2FkUGx1Z2luUGFja2FnZShjb25zdCBQbHVnaW5QYWNrYWdlKikgPSAw
OworICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBsdWdpbkRh
dGFiYXNlQ2xpZW50X2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39720</attachid>
            <date>2009-09-17 13:28:24 -0700</date>
            <delta_ts>2009-09-23 23:57:28 -0700</delta_ts>
            <desc>Qt patch to allow overriding plugin loading</desc>
            <filename>QtPluginLoadingPatch.txt</filename>
            <type>text/plain</type>
            <size>6129</size>
            <attacher name="Marius Renn">damarvy</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNDg0ODgpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMDktMDktMTcgIE1hcml1cyBSZW5uICA8ZGFtYXJ2eUBn
bWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgW1F0XSBBbGxvdyBkaXNhYmxpbmcgY2VydGFpbiBwbHVnaW5zIGZyb20gbG9hZGluZworCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODY3NworICAg
ICAgICAKKyAgICAgICAgRXh0ZW5zaW9uIG9mIHBsdWdpbiBsb2FkaW5nIGRlbGVnYXRpb24gdG8g
UGx1Z2luRGF0YWJhc2UgdG8gUXQncworICAgICAgICBRV2ViUGx1Z2luRGF0YWJhc2UuIFNwZWNp
ZmljYWxseSBhZGRlZCB0d28gbmV3IHZpcnR1YWwgbWV0aG9kcworICAgICAgICBzaG91bGRMb2Fk
UGx1Z2luQXRQYXRoKCkgYW5kIHNob3VsZExvYWRQbHVnaW5XaXRoSW5mbygpLCB3aGljaAorICAg
ICAgICBjYW4gYmUgb3ZlcnJpZGRlbiB0byBpbXBsZW1lbnQgY3VzdG9tIGxvYWRpbmcuCisKKyAg
ICAgICAgKiBBcGkvcXdlYnBsdWdpbmRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFFXZWJQbHVnaW5E
YXRhYmFzZUNsaWVudDo6UVdlYlBsdWdpbkRhdGFiYXNlQ2xpZW50KToKKyAgICAgICAgKFFXZWJQ
bHVnaW5EYXRhYmFzZUNsaWVudDo6c2hvdWxkTG9hZFBsdWdpbkF0UGF0aCk6CisgICAgICAgIChR
V2ViUGx1Z2luRGF0YWJhc2VDbGllbnQ6OnNob3VsZExvYWRQbHVnaW5QYWNrYWdlKToKKyAgICAg
ICAgKFFXZWJQbHVnaW5EYXRhYmFzZTo6UVdlYlBsdWdpbkRhdGFiYXNlKToKKyAgICAgICAgKFFX
ZWJQbHVnaW5EYXRhYmFzZTo6c2hvdWxkTG9hZFBsdWdpbkF0UGF0aCk6CisgICAgICAgIChRV2Vi
UGx1Z2luRGF0YWJhc2U6OnNob3VsZExvYWRQbHVnaW5XaXRoSW5mbyk6CisgICAgICAgICogQXBp
L3F3ZWJwbHVnaW5kYXRhYmFzZS5oOgorCiAyMDA5LTA5LTE3ICBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1v
biBIYXVzbWFubi4KSW5kZXg6IFdlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFiYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHAJKHJldmlz
aW9uIDQ4NDc1KQorKysgV2ViS2l0L3F0L0FwaS9xd2VicGx1Z2luZGF0YWJhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMSwxMCArMjEsMzUgQEAKICNpbmNsdWRlICJxd2VicGx1Z2luZGF0YWJh
c2UuaCIKIAogI2luY2x1ZGUgIlBsdWdpbkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiUGx1Z2luRGF0
YWJhc2VDbGllbnQuaCIKICNpbmNsdWRlICJQbHVnaW5QYWNrYWdlLmgiCiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCisvLyBQcml2YXRlIGNsYXNzIHRvIGZvcndhcmQgcGx1Z2luIGxvYWRp
bmcgY2FsbGJhY2tzIHRvIGEgUVdlYlBsdWdpbkRhdGFiYXNlIGluc3RhbmNlLgorY2xhc3MgUVdl
YlBsdWdpbkRhdGFiYXNlQ2xpZW50IDogcHVibGljIFBsdWdpbkRhdGFiYXNlQ2xpZW50IHsKK3By
aXZhdGU6CisgICAgUVdlYlBsdWdpbkRhdGFiYXNlKiBtX2RhdGFiYXNlOworcHVibGljOgorICAg
IFFXZWJQbHVnaW5EYXRhYmFzZUNsaWVudChRV2ViUGx1Z2luRGF0YWJhc2UqIHBsdWdpbkRhdGFi
YXNlKQorICAgICAgICA6IG1fZGF0YWJhc2UocGx1Z2luRGF0YWJhc2UpCisgICAgeworICAgIH0K
KyAgICAKKyAgICBib29sIHNob3VsZExvYWRQbHVnaW5BdFBhdGgoY29uc3QgV2ViQ29yZTo6U3Ry
aW5nJiBwbHVnaW5QYXRoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZGF0YWJhc2UgJiYgbV9k
YXRhYmFzZS0+c2hvdWxkTG9hZFBsdWdpbkF0UGF0aChwbHVnaW5QYXRoKTsKKyAgICB9CisgICAg
CisgICAgYm9vbCBzaG91bGRMb2FkUGx1Z2luUGFja2FnZShjb25zdCBXZWJDb3JlOjpQbHVnaW5Q
YWNrYWdlKiBwYWNrYWdlKQorICAgIHsKKyAgICAgICAgLy8gV2UgbmVlZCB0byBjYXN0IGF3YXkg
Y29uc3RuZXNzLCBidXQgYXMgdGhlIHdyYXBwaW5nIG9iamVjdCBpcyBjb25zdCwgd2UgY2FuIGJl
IHN1cmUgbm8KKyAgICAgICAgLy8gbW9kaWZpY2F0aW9ucyB0byB0aGUgdW5kZXJseWluZyBXZWJD
b3JlIG9iamVjdCB3aWxsIGJlIG1hZGUuCisgICAgICAgIGNvbnN0IFFXZWJQbHVnaW5JbmZvIHBs
dWdpbkluZm8oY29uc3RfY2FzdDxXZWJDb3JlOjpQbHVnaW5QYWNrYWdlKj4ocGFja2FnZSkpOwor
ICAgICAgICByZXR1cm4gbV9kYXRhYmFzZSAmJiBtX2RhdGFiYXNlLT5zaG91bGRMb2FkUGx1Z2lu
V2l0aEluZm8ocGx1Z2luSW5mbyk7CisgICAgfQorfTsKKwogLyohCiAgICAgXHR5cGVkZWYgUVdl
YlBsdWdpbkluZm86Ok1pbWVUeXBlCiAgICAgXHNpbmNlIDQuNgpAQCAtMjMxLDYgKzI1NiwxMSBA
QCBRV2ViUGx1Z2luSW5mbyAmUVdlYlBsdWdpbkluZm86Om9wZXJhdG9yCiAgICAgVGhlIGRlZmF1
bHQgc2V0IGNhbiBiZSBhY2Nlc3NlZCB1c2luZyBkZWZhdWx0U2VhcmNoUGF0aHMoKS4gVGhlIHNl
YXJjaCBwYXRocwogICAgIGNhbiBiZSBjaGFuZ2VkLCBzZWUgc2VhcmNoUGF0aHMoKSBhbmQgc2V0
U2VhcmNoUGF0aHMoKS4gQWRkaXRpb25hbCBzZWFyY2ggcGF0aHMKICAgICBjYW4gYWxzbyBiZSBh
ZGRlZCB1c2luZyBhZGRTZWFyY2hQYXRoKCkuCisgICAgCisgICAgQWRkaXRpb25hbGx5IHRoZSBw
bHVnaW5zIHRvIGxvYWQgY2FuIGJlIGZpbHRlcmVkIGJ5IHJlaW1wbGVtZW50aW5nCisgICAgc2hv
dWxkTG9hZFBsdWdpbkF0UGF0aCgpIGFuZCBzaG91bGRMb2FkUGx1Z2luUGFja2FnZSgpLCB3aGlj
aCBpcyBjYWxsZWQgZm9yIGV2ZXJ5CisgICAgcGx1Z2luIHRoYXQgaXMgYWJvdXQgdG8gYmUgbG9h
ZGVkIGJ5IFdlYktpdC4gUmV0dXJuaW5nIGEgdmFsdWUgb2YgZmFsc2UKKyAgICB3aWxsIGFib3J0
IHRoZSBsb2FkaW5nIHByb2Nlc3Mgb2YgdGhhdCBwYXJ0aWN1bGFyIHBsdWdpbi4KIAogICAgIFRo
ZSBwbHVnaW5zIHRoYXQgaGF2ZSBiZWVuIGRldGVjdGVkIGFyZSBleHBvc2VkIGJ5IHRoZSBwbHVn
aW5zKCkgbWV0aG9kLgogICAgIFRoZSBsaXN0IGNvbnRhaW5zIFFXZWJQbHVnaW4gb2JqZWN0cyB0
aGF0IGhvbGQgYm90aCB0aGUgbWV0YWRhdGEgYW5kIHRoZSBNSU1FCkBAIC0yNDgsOCArMjc4LDE1
IEBAIFFXZWJQbHVnaW5JbmZvICZRV2ViUGx1Z2luSW5mbzo6b3BlcmF0b3IKIAogUVdlYlBsdWdp
bkRhdGFiYXNlOjpRV2ViUGx1Z2luRGF0YWJhc2UoUU9iamVjdCogcGFyZW50KQogICAgIDogUU9i
amVjdChwYXJlbnQpCi0gICAgLCBtX2RhdGFiYXNlKFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQ
bHVnaW5zKCkpCisgICAgLCBtX2RhdGFiYXNlKFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVn
aW5zKGZhbHNlKSkKKyAgICAsIG1fZGF0YWJhc2VDbGllbnQobmV3IFFXZWJQbHVnaW5EYXRhYmFz
ZUNsaWVudCh0aGlzKSkKIHsKKyAgICAvLyBXZSB3YW50IHRvIHNldCB0aGUgY2xpZW50IGJlZm9y
ZSBsb2FkaW5nIHRoZSBwbHVnaW5zCisgICAgbV9kYXRhYmFzZS0+c2V0Q2xpZW50KG1fZGF0YWJh
c2VDbGllbnQpOworICAgIAorICAgIC8vIE5vdyBtYW51YWxseSByZWZyZXNoIHRoZSBkYXRhYmFz
ZQorICAgIG1fZGF0YWJhc2UtPnNldFBsdWdpbkRpcmVjdG9yaWVzKFBsdWdpbkRhdGFiYXNlOjpk
ZWZhdWx0UGx1Z2luRGlyZWN0b3JpZXMoKSk7CisgICAgbV9kYXRhYmFzZS0+cmVmcmVzaCgpOwog
fQogCiBRV2ViUGx1Z2luRGF0YWJhc2U6On5RV2ViUGx1Z2luRGF0YWJhc2UoKQpAQCAtMzc0LDMg
KzQxMSwyNSBAQCB2b2lkIFFXZWJQbHVnaW5EYXRhYmFzZTo6c2V0UHJlZmVycmVkUGx1CiB7CiAg
ICAgbV9kYXRhYmFzZS0+c2V0UHJlZmVycmVkUGx1Z2luRm9yTUlNRVR5cGUobWltZVR5cGUsIHBs
dWdpbi5tX3BhY2thZ2UpOwogfQorCisvKiEKKyAgICBSZXR1cm4gdHJ1ZSBpZiBXZWJLaXQgc2hv
dWxkIHByb2NlZWQgYW5kIGxvYWQgdGhlIHBsdWdpbiBhdCBcYSBwbHVnaW5QYXRoLiBUaGUKKyAg
ICBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGFsd2F5cyByZXR1cm5zIHRydWUuCisKKyAgICBcc2Eg
c2hvdWxkTG9hZFBsdWdpbldpdGhJbmZvKCkKKyovCitib29sIFFXZWJQbHVnaW5EYXRhYmFzZTo6
c2hvdWxkTG9hZFBsdWdpbkF0UGF0aChjb25zdCBRU3RyaW5nJiBwbHVnaW5QYXRoKSBjb25zdAor
eworICAgIHJldHVybiB0cnVlOworfQorCisvKiEKKyAgICBSZXR1cm4gdHJ1ZSBpZiBXZWJLaXQg
c2hvdWxkIGNvbnRpbnVlIHRvIGxvYWQgdGhlIHBsdWdpbiBhdCBkZXNjcmliZWQgYnkKKyAgICBc
YSBwbHVnaW5JbmZvLiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBhbHdheXMgcmV0dXJucyB0
cnVlLgorCisgICAgXHNhIHNob3VsZExvYWRQbHVnaW5BdFBhdGgoKQorKi8KK2Jvb2wgUVdlYlBs
dWdpbkRhdGFiYXNlOjpzaG91bGRMb2FkUGx1Z2luV2l0aEluZm8oY29uc3QgUVdlYlBsdWdpbklu
Zm8mIHBsdWdpbkluZm8pIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CkluZGV4OiBXZWJL
aXQvcXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9B
cGkvcXdlYnBsdWdpbmRhdGFiYXNlLmgJKHJldmlzaW9uIDQ4NDc1KQorKysgV2ViS2l0L3F0L0Fw
aS9xd2VicGx1Z2luZGF0YWJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsMjAgKzYwLDIyIEBA
IHB1YmxpYzoKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUVdlYlBsdWdpbkluZm8mIG90aGVy
KSBjb25zdDsKIAogICAgIGZyaWVuZCBjbGFzcyBRV2ViUGx1Z2luRGF0YWJhc2U7Ci0KKyAgICBm
cmllbmQgY2xhc3MgUVdlYlBsdWdpbkRhdGFiYXNlQ2xpZW50OworICAgIAogcHJpdmF0ZToKICAg
ICBRV2ViUGx1Z2luSW5mb1ByaXZhdGUqIGQ7CiAgICAgV2ViQ29yZTo6UGx1Z2luUGFja2FnZSog
bV9wYWNrYWdlOwogICAgIG11dGFibGUgUUxpc3Q8TWltZVR5cGU+IG1fbWltZVR5cGVzOwogfTsK
IAorY2xhc3MgUVdlYlBsdWdpbkRhdGFiYXNlQ2xpZW50OwogY2xhc3MgUVdlYlBsdWdpbkRhdGFi
YXNlUHJpdmF0ZTsKIGNsYXNzIFFXRUJLSVRfRVhQT1JUIFFXZWJQbHVnaW5EYXRhYmFzZSA6IHB1
YmxpYyBRT2JqZWN0IHsKICAgICBRX09CSkVDVAogCiBwcml2YXRlOgogICAgIFFXZWJQbHVnaW5E
YXRhYmFzZShRT2JqZWN0KiBwYXJlbnQgPSAwKTsKLSAgICB+UVdlYlBsdWdpbkRhdGFiYXNlKCk7
CisgICAgdmlydHVhbCB+UVdlYlBsdWdpbkRhdGFiYXNlKCk7CiAKIHB1YmxpYzoKICAgICBRTGlz
dDxRV2ViUGx1Z2luSW5mbz4gcGx1Z2lucygpIGNvbnN0OwpAQCAtODcsMTIgKzg5LDE2IEBAIHB1
YmxpYzoKIAogICAgIFFXZWJQbHVnaW5JbmZvIHBsdWdpbkZvck1pbWVUeXBlKGNvbnN0IFFTdHJp
bmcmIG1pbWVUeXBlKTsKICAgICB2b2lkIHNldFByZWZlcnJlZFBsdWdpbkZvck1pbWVUeXBlKGNv
bnN0IFFTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBRV2ViUGx1Z2luSW5mbyYgcGx1Z2luKTsKKyAg
ICAKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTG9hZFBsdWdpbkF0UGF0aChjb25zdCBRU3RyaW5n
JiBwbHVnaW5QYXRoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTG9hZFBsdWdpbldp
dGhJbmZvKGNvbnN0IFFXZWJQbHVnaW5JbmZvJiBwbHVnaW5JbmZvKSBjb25zdDsKIAogICAgIGZy
aWVuZCBjbGFzcyBRV2ViU2V0dGluZ3M7CiAKIHByaXZhdGU6CiAgICAgUVdlYlBsdWdpbkRhdGFi
YXNlUHJpdmF0ZSogZDsKICAgICBXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZSogbV9kYXRhYmFzZTsK
KyAgICBRV2ViUGx1Z2luRGF0YWJhc2VDbGllbnQqIG1fZGF0YWJhc2VDbGllbnQ7CiB9OwogCiAj
ZW5kaWYgLy8gUVdFQlBMVUdJTkRBVEFCQVNFX0gK
</data>

          </attachment>
      

    </bug>

</bugzilla>