<?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>29290</bug_id>
          
          <creation_ts>2009-09-15 17:55:06 -0700</creation_ts>
          <short_desc>StorageNamespace::storageArea() should take in a PassRefPtr&lt;StorageOrigin&gt;</short_desc>
          <delta_ts>2009-09-24 14:36:57 -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>New Bugs</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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeremy Orlow">jorlow</reporter>
          <assigned_to name="Jeremy Orlow">jorlow</assigned_to>
          <cc>eric</cc>
    
    <cc>fishd</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>147433</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-09-15 17:55:06 -0700</bug_when>
    <thetext>StorageAreaImpl takes in a PassRefPtr&lt;SecurityOrigin&gt; so we might as well do it
one level higher in the call chain.  I REALLY wanted to make securityOrigin()
return a PassRefPtr&lt;&gt; but it required pretty much changing the world.  (Soooo
much assumed it was a pointer.)  Enough so that I actually suspect it&apos;d have
noticeable perf consequences.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147435</commentid>
    <comment_count>1</comment_count>
      <attachid>39626</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-09-15 17:58:52 -0700</bug_when>
    <thetext>Created attachment 39626
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147436</commentid>
    <comment_count>2</comment_count>
      <attachid>39626</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-15 18:01:45 -0700</bug_when>
    <thetext>Comment on attachment 39626
Patch v1

Is this the only StorageNamespace implementation which needs changing?  I&apos;m surprised by the separate headers, but I don&apos;t know much about how storage is written.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147437</commentid>
    <comment_count>3</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-09-15 18:03:20 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 39626 [details])
&gt; Is this the only StorageNamespace implementation which needs changing?  I&apos;m
&gt; surprised by the separate headers, but I don&apos;t know much about how storage is
&gt; written.

There is only one implementation in WebKit.  Chromium uses the interface to proxy data from process to process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147695</commentid>
    <comment_count>4</comment_count>
      <attachid>39672</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-09-16 17:43:05 -0700</bug_when>
    <thetext>Created attachment 39672
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148772</commentid>
    <comment_count>5</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-09-21 13:09:27 -0700</bug_when>
    <thetext>Eric, should be easy for you since this is just a new rev of what I posted before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148784</commentid>
    <comment_count>6</comment_count>
      <attachid>39672</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-21 13:24:45 -0700</bug_when>
    <thetext>Comment on attachment 39672
Patch v1

This code has some strange memory management.

Release is not needed here:
 113     m_storageAreaMap.set(origin.release(), storageArea);

PassRefPtr&apos;s automatically release.

111112     storageArea = adoptRef(new StorageAreaImpl(m_storageType, origin, m_syncManager));
Really should be using a create() function instead.

I guess r- for the extra unneeded .release().  (Unless I&apos;m misunderstanding something?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148793</commentid>
    <comment_count>7</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-09-21 13:38:38 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 39672 [details])
&gt; This code has some strange memory management.
&gt; 
&gt; Release is not needed here:
&gt;  113     m_storageAreaMap.set(origin.release(), storageArea);
&gt; 
&gt; PassRefPtr&apos;s automatically release.
&gt; 
&gt; 111112     storageArea = adoptRef(new StorageAreaImpl(m_storageType, origin,
&gt; m_syncManager));
&gt; Really should be using a create() function instead.
&gt; 
&gt; I guess r- for the extra unneeded .release().  (Unless I&apos;m misunderstanding
&gt; something?)

.release() is never needed, but it&apos;s a performance optimization that&apos;s often used when you know that the variable is never going to be needed again.  I see plenty examples of it being done throughout WebCore--both in the return statement and outside of it.

That said, I&apos;m fine with removing it.  I don&apos;t think it&apos;s possible it&apos;d have a measurable affect on perf.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148798</commentid>
    <comment_count>8</comment_count>
      <attachid>39672</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-21 13:44:43 -0700</bug_when>
    <thetext>Comment on attachment 39672
Patch v1

Sorry, I misread the patch.

 113     m_storageAreaMap.set(origin.release(), storageArea);

I thought that was prpOrigin, which would not need a release since it&apos;s already a PassRefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148799</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-21 13:45:41 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; .release() is never needed, but it&apos;s a performance optimization that&apos;s often
&gt; used when you know that the variable is never going to be needed again.  I see
&gt; plenty examples of it being done throughout WebCore--both in the return
&gt; statement and outside of it.

Yes.  I simply misread the patch.  I thought the variable in question was already a PassRefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148836</commentid>
    <comment_count>10</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-09-21 14:41:02 -0700</bug_when>
    <thetext>Sorry Eric, but I had already started making your change to StorageAreaImpl by the time you r+&apos;ed it.  :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148837</commentid>
    <comment_count>11</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-09-21 14:41:57 -0700</bug_when>
    <thetext>Oh...ha!  I made it in the &quot;wrong&quot; svn client.  So never mind.  :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148843</commentid>
    <comment_count>12</comment_count>
      <attachid>39881</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-09-21 14:48:21 -0700</bug_when>
    <thetext>Created attachment 39881
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148845</commentid>
    <comment_count>13</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-09-21 14:49:48 -0700</bug_when>
    <thetext>Oh....actually, I&apos;m just plain an idiot.

1) I actually did make the change in this svn client.
2) I uploaded another diff which killed an r+ it shouldn&apos;t have.

So please do take one last look.  :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148855</commentid>
    <comment_count>14</comment_count>
      <attachid>39881</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-21 15:00:09 -0700</bug_when>
    <thetext>Comment on attachment 39881
Patch v1

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149850</commentid>
    <comment_count>15</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-09-24 14:36:57 -0700</bug_when>
    <thetext>Committed r48734: &lt;http://trac.webkit.org/changeset/48734&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39626</attachid>
            <date>2009-09-15 17:58:52 -0700</date>
            <delta_ts>2009-09-16 17:43:00 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-29290-20090915175851.patch</filename>
            <type>text/plain</type>
            <size>3344</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODQwNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMDktMDktMTUgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U3RvcmFnZU5hbWVzcGFjZUltcGwgc2hvdWxkIHRha2UgaW4gYSBQYXNzUmVmUHRyPFN0b3JhZ2VP
cmlnaW4+LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjkyOTAKKworICAgICAgICBTdG9yYWdlQXJlYUltcGwgdGFrZXMgaW4gYSBQYXNzUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBzbyB3ZSBtaWdodCBhcyB3ZWxsIGRvIGl0CisgICAgICAgIG9uZSBsZXZl
bCBoaWdoZXIgaW4gdGhlIGNhbGwgY2hhaW4uCisKKyAgICAgICAgSWRlYWxseSwgRE9NV2luZG93
LmNwcDpsb2NhbFN0b3JhZ2UgYW5kIHNlc3Npb25TdG9yYWdlIGNvdWxkIGFsc28gb25seSBkZWFs
IHdpdGgKKyAgICAgICAgUGFzc1JlZlB0cjw+J3MuICBVbmZvcnR1bmF0ZWx5IHRoZWlyIGNhbGwg
dG8gZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkgKHdoaWNoCisgICAgICAgIGlzIGltcGxlbWVu
dGVkIGluIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIHJldHVybnMgYSBTZWN1cml0eU9yaWdpbiou
ICBJIFJFQUxMWQorICAgICAgICB3YW50ZWQgdG8gbWFrZSB0aGF0IHJldHVybiBhIFBhc3NSZWZQ
dHI8PiBidXQgaXQgcmVxdWlyZWQgcHJldHR5IG11Y2ggY2hhbmdpbmcKKyAgICAgICAgdGhlIHdv
cmxkLiAgKFNvb29vIG11Y2ggYXNzdW1lZCBpdCB3YXMgYSBwb2ludGVyLikgIEVub3VnaCBzbyB0
aGF0IEkgYWN0dWFsbHkKKyAgICAgICAgc3VzcGVjdCBpdCdkIGhhdmUgbm90aWNlYWJsZSBwZXJm
IGNvbnNlcXVlbmNlcy4gIFN0aWxsLCBJIHRoaW5rIGV2ZW4gdGhpcworICAgICAgICBjaGFuZ2Ug
bWFrZXMgdGhpbmdzIGEgYml0IG1vcmUgY2xlYXIgYW5kIHNlbGYgZG9jdW1lbnRpbmcuCisKKyAg
ICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLCBzbyBubyB0ZXN0cy4KKworICAgICAgICAqIHN0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZS5oOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3Jh
Z2VBcmVhKToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmg6CisKIDIw
MDktMDktMTUgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBCZXRoIERha2luLgpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VO
YW1lc3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZS5oCShyZXZpc2lvbiA0ODQwNCkKKysrIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBzZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZSgpOwogCiAgICAgICAgIHZpcnR1YWwgflN0b3JhZ2VOYW1lc3BhY2UoKSB7IH0K
LSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShTZWN1
cml0eU9yaWdpbiopID0gMDsKKyAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVh
PiBzdG9yYWdlQXJlYShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPikgPSAwOwogICAgICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY29weSgpID0gMDsKICAgICAgICAg
dmlydHVhbCB2b2lkIGNsb3NlKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgdW5sb2NrKCkg
PSAwOwpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCShyZXZp
c2lvbiA0ODQwNCkKKysrIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAgUGFzc1JlZlB0cjxTdG9yYWdlTmFtZXNw
YWNlPiBTdG9yYWdlTmFtZQogICAgIHJldHVybiBhZG9wdFJlZihuZXdOYW1lc3BhY2UpOwogfQog
Ci1QYXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFy
ZWEoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK1Bhc3NSZWZQdHI8U3RvcmFnZUFyZWE+IFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBv
cmlnaW4pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1faXNT
aHV0ZG93bik7CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAkocmV2
aXNpb24gNDg0MDQpCisrKyBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAko
d29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IHNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKCk7CiAKICAgICAgICAgdmlydHVhbCB+U3RvcmFnZU5hbWVzcGFjZUltcGwoKTsKLSAg
ICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShTZWN1cml0
eU9yaWdpbiopOworICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3Jh
Z2VBcmVhKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+KTsKICAgICAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGNs
b3NlKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB1bmxvY2soKTs=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39672</attachid>
            <date>2009-09-16 17:43:05 -0700</date>
            <delta_ts>2009-09-21 14:48:09 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-29290-20090916174304.patch</filename>
            <type>text/plain</type>
            <size>3190</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODQwNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMDktMDktMTUgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U3RvcmFnZU5hbWVzcGFjZTo6c3RvcmFnZUFyZWEoKSBzaG91bGQgdGFrZSBpbiBhIFBhc3NSZWZQ
dHI8U3RvcmFnZU9yaWdpbj4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI5MjkwCisKKyAgICAgICAgTW9kaWZpZWQgU3RvcmFnZU5hbWVzcGFjZTo6c3Rv
cmFnZUFyZWEoKSB0byB0YWtlIGluIGEgUGFzc1JlZlB0cjxTdG9yYWdlT3JpZ2luPgorICAgICAg
ICBwZXIgaHR0cDovL3dlYmtpdC5vcmcvY29kaW5nL1JlZlB0ci5odG1sCisKKyAgICAgICAgTm8g
YmVoYXZpb3IgY2hhbmdlLCBzbyBubyB0ZXN0cy4KKworICAgICAgICAqIHN0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZS5oOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKToK
KyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmg6CisKIDIwMDktMDktMTUg
IENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBCZXRoIERha2luLgpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oCShyZXZp
c2lvbiA0ODQwNCkKKysrIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZSgpOwogCiAgICAgICAgIHZpcnR1YWwgflN0b3JhZ2VOYW1lc3BhY2UoKSB7IH0KLSAgICAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShTZWN1cml0eU9yaWdp
biopID0gMDsKKyAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBzdG9yYWdl
QXJlYShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPikgPSAwOwogICAgICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY29weSgpID0gMDsKICAgICAgICAgdmlydHVhbCB2
b2lkIGNsb3NlKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgdW5sb2NrKCkgPSAwOwpJbmRl
eDogV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCShyZXZpc2lvbiA0ODQw
NCkKKysrIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTk5LDE3ICs5OSwxOCBAQCBQYXNzUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IFN0
b3JhZ2VOYW1lCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ld05hbWVzcGFjZSk7CiB9CiAKLVBhc3NS
ZWZQdHI8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShTZWN1
cml0eU9yaWdpbiogb3JpZ2luKQorUGFzc1JlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVz
cGFjZUltcGw6OnN0b3JhZ2VBcmVhKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHBycE9yaWdp
bikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9pc1NodXRk
b3duKTsKIAorICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gcHJwT3JpZ2luOwog
ICAgIFJlZlB0cjxTdG9yYWdlQXJlYUltcGw+IHN0b3JhZ2VBcmVhOwogICAgIGlmIChzdG9yYWdl
QXJlYSA9IG1fc3RvcmFnZUFyZWFNYXAuZ2V0KG9yaWdpbikpCiAgICAgICAgIHJldHVybiBzdG9y
YWdlQXJlYS5yZWxlYXNlKCk7CiAKICAgICBzdG9yYWdlQXJlYSA9IGFkb3B0UmVmKG5ldyBTdG9y
YWdlQXJlYUltcGwobV9zdG9yYWdlVHlwZSwgb3JpZ2luLCBtX3N5bmNNYW5hZ2VyKSk7Ci0gICAg
bV9zdG9yYWdlQXJlYU1hcC5zZXQob3JpZ2luLCBzdG9yYWdlQXJlYSk7CisgICAgbV9zdG9yYWdl
QXJlYU1hcC5zZXQob3JpZ2luLnJlbGVhc2UoKSwgc3RvcmFnZUFyZWEpOwogICAgIHJldHVybiBz
dG9yYWdlQXJlYS5yZWxlYXNlKCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdl
TmFtZXNwYWNlSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlSW1wbC5oCShyZXZpc2lvbiA0ODQwNCkKKysrIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdl
TmFtZXNwYWNlSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4g
c2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoKTsKIAogICAgICAgICB2aXJ0dWFsIH5TdG9yYWdlTmFt
ZXNwYWNlSW1wbCgpOwotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+IHN0
b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2luKik7CisgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxT
dG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4pOwogICAg
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY29weSgpOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgY2xvc2UoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHVubG9jaygpOw==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39881</attachid>
            <date>2009-09-21 14:48:21 -0700</date>
            <delta_ts>2009-09-21 15:00:08 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-29290-20090921144820.patch</filename>
            <type>text/plain</type>
            <size>5057</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODU5MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMDktMDktMjEgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U3RvcmFnZU5hbWVzcGFjZTo6c3RvcmFnZUFyZWEoKSBzaG91bGQgdGFrZSBpbiBhIFBhc3NSZWZQ
dHI8U3RvcmFnZU9yaWdpbj4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI5MjkwCisKKyAgICAgICAgTW9kaWZpZWQgU3RvcmFnZU5hbWVzcGFjZTo6c3Rv
cmFnZUFyZWEoKSB0byB0YWtlIGluIGEgUGFzc1JlZlB0cjxTdG9yYWdlT3JpZ2luPgorICAgICAg
ICBwZXIgaHR0cDovL3dlYmtpdC5vcmcvY29kaW5nL1JlZlB0ci5odG1sCisKKyAgICAgICAgTm8g
YmVoYXZpb3IgY2hhbmdlLCBzbyBubyB0ZXN0cy4KKworICAgICAgICAqIHN0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZS5oOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKToK
KyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmg6CisKIDIwMDktMDktMjEg
IERhcmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAko
cmV2aXNpb24gNDg1OTIpCisrKyBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsMTEgQEAgU3RvcmFnZUFyZWFJbXBsOjp+U3RvcmFn
ZUFyZWFJbXBsKCkKIHsKIH0KIAorUGFzc1JlZlB0cjxTdG9yYWdlQXJlYUltcGw+IFN0b3JhZ2VB
cmVhSW1wbDo6Y3JlYXRlKFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBQYXNzUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiBvcmlnaW4sIFBhc3NSZWZQdHI8U3RvcmFnZVN5bmNNYW5hZ2VyPiBzeW5jTWFu
YWdlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0b3JhZ2VBcmVhSW1wbChzdG9yYWdl
VHlwZSwgb3JpZ2luLCBzeW5jTWFuYWdlcikpOworfQorCiBTdG9yYWdlQXJlYUltcGw6OlN0b3Jh
Z2VBcmVhSW1wbChTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4gb3JpZ2luLCBQYXNzUmVmUHRyPFN0b3JhZ2VTeW5jTWFuYWdlcj4gc3luY01hbmFnZXIp
CiAgICAgOiBtX3N0b3JhZ2VUeXBlKHN0b3JhZ2VUeXBlKQogICAgICwgbV9zZWN1cml0eU9yaWdp
bihvcmlnaW4pCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCShyZXZpc2lvbiA0ODU5
MikKKysrIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWEuaCIKIAorI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC00MCw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNs
YXNzIFN0b3JhZ2VBcmVhSW1wbCA6IHB1YmxpYyBTdG9yYWdlQXJlYSB7CiAgICAgcHVibGljOgot
ICAgICAgICBTdG9yYWdlQXJlYUltcGwoU3RvcmFnZVR5cGUsIFBhc3NSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+LCBQYXNzUmVmUHRyPFN0b3JhZ2VTeW5jTWFuYWdlcj4pOworICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTdG9yYWdlQXJlYUltcGw+IGNyZWF0ZShTdG9yYWdlVHlwZSwgUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4sIFBhc3NSZWZQdHI8U3RvcmFnZVN5bmNNYW5hZ2VyPik7CiAgICAg
ICAgIHZpcnR1YWwgflN0b3JhZ2VBcmVhSW1wbCgpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MNSBE
T00gU3RvcmFnZSBBUEkgKGFuZCBjb250YWlucykKQEAgLTYwLDYgKzYxLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKTsKIAog
ICAgIHByaXZhdGU6CisgICAgICAgIFN0b3JhZ2VBcmVhSW1wbChTdG9yYWdlVHlwZSwgUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4sIFBhc3NSZWZQdHI8U3RvcmFnZVN5bmNNYW5hZ2VyPik7CiAg
ICAgICAgIFN0b3JhZ2VBcmVhSW1wbChTdG9yYWdlQXJlYUltcGwqKTsKIAogICAgICAgICB2b2lk
IGJsb2NrVW50aWxJbXBvcnRDb21wbGV0ZSgpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9zdG9yYWdl
L1N0b3JhZ2VOYW1lc3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZS5oCShyZXZpc2lvbiA0ODU5MikKKysrIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdl
TmFtZXNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBzZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZSgpOwogCiAgICAgICAgIHZpcnR1YWwgflN0b3JhZ2VOYW1lc3Bh
Y2UoKSB7IH0KLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBzdG9yYWdl
QXJlYShTZWN1cml0eU9yaWdpbiopID0gMDsKKyAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0
b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPikgPSAwOwog
ICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY29weSgpID0gMDsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
dW5sb2NrKCkgPSAwOwpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwu
Y3BwCShyZXZpc2lvbiA0ODU5MikKKysrIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNl
SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDE3ICs5OSwxOCBAQCBQYXNzUmVmUHRyPFN0
b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1lCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ld05hbWVz
cGFjZSk7CiB9CiAKLVBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpzdG9yYWdlQXJlYShTZWN1cml0eU9yaWdpbiogb3JpZ2luKQorUGFzc1JlZlB0cjxTdG9yYWdl
QXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKFBhc3NSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IHBycE9yaWdpbikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAg
IEFTU0VSVCghbV9pc1NodXRkb3duKTsKIAorICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3Jp
Z2luID0gcHJwT3JpZ2luOwogICAgIFJlZlB0cjxTdG9yYWdlQXJlYUltcGw+IHN0b3JhZ2VBcmVh
OwogICAgIGlmIChzdG9yYWdlQXJlYSA9IG1fc3RvcmFnZUFyZWFNYXAuZ2V0KG9yaWdpbikpCiAg
ICAgICAgIHJldHVybiBzdG9yYWdlQXJlYS5yZWxlYXNlKCk7CiAKLSAgICBzdG9yYWdlQXJlYSA9
IGFkb3B0UmVmKG5ldyBTdG9yYWdlQXJlYUltcGwobV9zdG9yYWdlVHlwZSwgb3JpZ2luLCBtX3N5
bmNNYW5hZ2VyKSk7Ci0gICAgbV9zdG9yYWdlQXJlYU1hcC5zZXQob3JpZ2luLCBzdG9yYWdlQXJl
YSk7CisgICAgc3RvcmFnZUFyZWEgPSBTdG9yYWdlQXJlYUltcGw6OmNyZWF0ZShtX3N0b3JhZ2VU
eXBlLCBvcmlnaW4sIG1fc3luY01hbmFnZXIpOworICAgIG1fc3RvcmFnZUFyZWFNYXAuc2V0KG9y
aWdpbi5yZWxlYXNlKCksIHN0b3JhZ2VBcmVhKTsKICAgICByZXR1cm4gc3RvcmFnZUFyZWEucmVs
ZWFzZSgpOwogfQogCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAko
cmV2aXNpb24gNDg1OTIpCisrKyBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwu
aAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IHNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKCk7CiAKICAgICAgICAgdmlydHVhbCB+U3RvcmFnZU5hbWVzcGFjZUltcGwoKTsK
LSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShTZWN1
cml0eU9yaWdpbiopOworICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+IHN0
b3JhZ2VBcmVhKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+KTsKICAgICAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGNsb3NlKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB1bmxvY2soKTs=
</data>
<flag name="review"
          id="21024"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>