<?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>15715</bug_id>
          
          <creation_ts>2007-10-26 14:55:23 -0700</creation_ts>
          <short_desc>Nested XSL stylesheets can produce memory corruption</short_desc>
          <delta_ts>2010-06-10 16:45:13 -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>XML</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Haas">myrdred</reporter>
          <assigned_to name="Jonathan Haas">myrdred</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>emacemac7</cc>
    
    <cc>eric</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>mihnea</cc>
    
    <cc>mrowe</cc>
    
    <cc>myrdred</cc>
    
    <cc>pam</cc>
    
    <cc>slewis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>59574</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Haas">myrdred</who>
    <bug_when>2007-10-26 14:55:23 -0700</bug_when>
    <thetext>libxml, after it loads and parses a document, goes through a postprocessing phase where it replaces some or all of the strings in the document with pointers to a dictionary it builds. When an XML document is transformed by a stylesheet, it will end up with references to strings in the stylesheet&apos;s dictionary. When the XML doc is destroyed, each node is checked to see if the address of its pointer resides in space managed by the internal dictionary. If not, libxml knows it can safely free the memory.

Current behavior is for nested stylesheets to load and parse as separate documents. When the stylesheet is applied, the transformed document can get references to both stylesheets. When the destructor is called, the node traversal checks strings only against the parent stylesheet&apos;s dictionary, not the nested stylesheet. When it gets to a node that has a pointer to the child spreadsheet&apos;s dictionary, the mechanism for checking whether a node contains a string allocated by the model or a pointer to a dictionary fails, and free() is called on memory that we don&apos;t want freed, and which may never have been malloc&apos;d to begin with. Fix attached.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59575</commentid>
    <comment_count>1</comment_count>
      <attachid>16889</attachid>
    <who name="Jonathan Haas">myrdred</who>
    <bug_when>2007-10-26 14:56:34 -0700</bug_when>
    <thetext>Created attachment 16889
proposed patch

Gives child stylesheets a link to their parents. Forces them to use the parent&apos;s dictionary when parsing, leaving the whole nested system with a single dictionary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59577</commentid>
    <comment_count>2</comment_count>
      <attachid>16890</attachid>
    <who name="Jonathan Haas">myrdred</who>
    <bug_when>2007-10-26 15:24:42 -0700</bug_when>
    <thetext>Created attachment 16890
proposed patch take 2, accidentally included stuff I didn&apos;t mean to</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59601</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-10-26 23:26:27 -0700</bug_when>
    <thetext>Is the problem this patch fixes more than potential? Can it be seen with a test case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59631</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-27 12:29:30 -0700</bug_when>
    <thetext>I think ap and I would be very interested in discussing this with you over IRC.  We&apos;ve both hacked on this code, but at least I can&apos;t claim to be a libxml2 expert.  What you&apos;re &quot;fixing&quot; looks like a potential bug in libxslt/libxml2?  Correct?  If so, we should definitely also file a bug with gnome and link to the bug from here (for our records). WebCore generally deals only with UTF16 strings , that&apos;s why we we were passing xmlCtxtReadDoc a UTF16 string.  If it&apos;s true xmlCtxtReadDoc only works with UTF8, that&apos;s yet another bug with libxml2 (at least in the documentation):
http://xmlsoft.org/html/libxml-parser.html#xmlCtxtReadDoc
which also should be filed and linked to from this bug.

If this is really a memory corruption issue, then it can be marked p1, and we&apos;ll definitely make a fix.  But I&apos;m not comfortable taking this change w/o at least a test case, and preferably chatting with you a bit over irc. :)  MacDome or ap in #webkit is the easiest way to reach us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59632</commentid>
    <comment_count>5</comment_count>
      <attachid>16890</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-27 12:30:36 -0700</bug_when>
    <thetext>Comment on attachment 16890
proposed patch take 2, accidentally included stuff I didn&apos;t mean to

Can&apos;t land this w/o at least a test case and change log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59806</commentid>
    <comment_count>6</comment_count>
    <who name="Jonathan Haas">myrdred</who>
    <bug_when>2007-10-29 12:39:44 -0700</bug_when>
    <thetext>Sorry it&apos;s taken so long to respond, I&apos;ve been out of town.

Alexey: the problem can be seen quite easily by building WebKit and linking with your own build of libxml2. The prebuilt libxml2 binary that WebKit ships with does not reproduce the problem; I suspect that runtime heap checks are turned off. With full heap checking, an assert is always triggered with a non-empty nested stylesheet. The following reproduces it:

---

[test.xml]
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;?xml-stylesheet type=&quot;text/xsl&quot; href=&quot;test0.xsl&quot;?&gt;
&lt;testing&gt;
 &lt;message&gt;Hello, world!&lt;/message&gt;
&lt;/testing&gt;

[test0.xsl]
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;xsl:stylesheet version=&quot;1.0&quot;
   xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;&gt;
 &lt;xsl:import href=&quot;test1.xsl&quot;/&gt;
&lt;/xsl:stylesheet&gt;

[test1.xsl]
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;

&lt;xsl:stylesheet version=&quot;1.0&quot;
   xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;&gt;

&lt;xsl:template match=&quot;/&quot;&gt;
 &lt;html&gt;
   &lt;head&gt;
     &lt;title&gt;Testing&lt;/title&gt;
   &lt;/head&gt;
   &lt;body&gt;
     &lt;div id=&quot;kablammo&quot;&gt;
       &lt;b&gt;FOO!&lt;/b&gt;
     &lt;/div&gt;
   &lt;/body&gt;
 &lt;/html&gt;
&lt;/xsl:template&gt;

&lt;/xsl:stylesheet&gt;

---

Eric, I wouldn&apos;t call this a bug in libxml2/libxslt (and believe me, I seriously considered the possibility.) It could be resolved by making changes to these libraries, but not very elegantly. The problem is that libxml loads and parses a document either with its own dictionary (if it creates the parse context) or with a shared dictionary (if a context is provided by the client). By the time libxslt sees the doc, it&apos;s already been parsed, and its strings are already in whichever dictionary they&apos;re going to be in. Since libxslt delegates the loading of child stylesheets to the client, it&apos;s the client&apos;s responsibility to ensure that the dictionaries are not disjoint. As for the UTF-8 comment, I think I wasn&apos;t very clear... the current code didn&apos;t call xmlCtxtReadDoc() at all, but rather xmlReadMemory(), which will happily take buffers with any encoding you care to pass in. But in order to have the child stylesheet share the parent&apos;s dictionary, we need to create the context ourselves, and the only way that libxml exposes to do that is to use xmlCtxtReadDoc(), which only works on UTF-8 (it takes a pointer to xmlChar), which is why I was wondering why the function takes an encoding parameter at all. That&apos;d be something to take up with the gnome folks.

I&apos;ll look for you on IRC to talk abut it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59830</commentid>
    <comment_count>7</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-10-29 21:42:34 -0700</bug_when>
    <thetext>Copying Mark since he updated libxml2 recently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59841</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-10-30 03:20:56 -0700</bug_when>
    <thetext>With a debug build of libxml2 2.6.16 (./configure  --with-mem-debug --with-run-debug), I do see dictionary inconsistency errors:

element html: error : Name is not from the document dictionnary &apos;html&apos;
element head: error : Name is not from the document dictionnary &apos;head&apos;
element title: error : Name is not from the document dictionnary &apos;title&apos;
element body: error : Name is not from the document dictionnary &apos;body&apos;
element div: error : Name is not from the document dictionnary &apos;div&apos;
element b: error : Name is not from the document dictionnary &apos;b&apos;

However, my results are somewhat different:
1) I do not see any free() problems (OS X memory allocator would have complained if someone were trying to free non-allocated memory, or to double-free). I also don&apos;t get any assertion failures.
2) I see similar errors from all XSL transformations, not just ones that involve nested stylesheets.

So, while there&apos;s definitely something wrong going on, I still don&apos;t quite see what exactly the problem is, and whether it is indeed a memory corruption problem.

Note that WebKit becomes very crash-prone when running against a debug build of libxml2, because the debug version of xmlFree() cannot take NULL arguments. I think this is a libxml2 bug, I&apos;ve reported it: &lt;http://bugzilla.gnome.org/show_bug.cgi?id=491651&gt;.

&gt; But in order to have the child
&gt; stylesheet share the parent&apos;s dictionary, we need to create the context
&gt; ourselves, and the only way that libxml exposes to do that is to use
&gt; xmlCtxtReadDoc(), which only works on UTF-8 (it takes a pointer to xmlChar),

Can we use xmlCtxtReadMemory()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59868</commentid>
    <comment_count>9</comment_count>
    <who name="Jonathan Haas">myrdred</who>
    <bug_when>2007-10-30 14:42:23 -0700</bug_when>
    <thetext>&gt; Can we use xmlCtxtReadMemory()?

No, because libxml2 doesn&apos;t expose xmlCreateMemoryParserContext().
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59957</commentid>
    <comment_count>10</comment_count>
    <who name="Jonathan Haas">myrdred</who>
    <bug_when>2007-10-31 15:29:20 -0700</bug_when>
    <thetext>So I tried to repro this on a Mac, doing the following:

1) Downloaded and installed sources for libxml2-2.6.30 and libxslt-1.1.22 (the most recent versions, in both cases)

2) Built both using ./configure --prefix=/usr; make; sudo make install

3) Built WebKit using WebKit/WebKitTools/Scripts/build-webkit --debug

4) Ran Safari with WebKit/WebKitTools/Scripts/run-safari --debug

5) Navigated to ~/test/test.xml (containing repro scripts above)

Output:

jhaas$ webkit/webkittools/scripts/run-safari --debug
Starting Safari with DYLD_FRAMEWORK_PATH set to point to built WebKit in /Users/jhaas/webkit/WebKit/WebKitBuild/Debug.
Safari(6253,0xa000d000) malloc: ***  Deallocation of a pointer not malloced: 0x29432d7; This could be a double free(), or free() called with the middle of an allocated block; Try setting environment variable MallocHelp to see tools to help debug

More or less the same behavior I saw in Win32.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59988</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-11-01 02:04:36 -0700</bug_when>
    <thetext>Confirmed that the behavior is different with latest libxml2 and libxslt (I wonder what versions 10.5 has). With libxml2 memory debugging enabled, the output is:

Memory tag error occurs :0x311d0d7 
         bye
      12:01:03 PM

      MEMORY ALLOCATED : 42495, MAX was 54711
&lt;dump of all blocks&gt;
xmlMemFree(311D0F7) error
xmlMallocBreakpoint reached on block 0

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60073</commentid>
    <comment_count>12</comment_count>
      <attachid>16995</attachid>
    <who name="Jonathan Haas">myrdred</who>
    <bug_when>2007-11-02 11:29:59 -0700</bug_when>
    <thetext>Created attachment 16995
proposed patch, fixed indentation

Patch with indentation fixed. The repro case is described in the discussion... the bug doesn&apos;t really lend itself well to a test case since it only repros (on Tiger) with a self-built libxml2. Changelog is included in the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60404</commentid>
    <comment_count>13</comment_count>
      <attachid>16995</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-11-06 07:48:38 -0800</bug_when>
    <thetext>Comment on attachment 16995
proposed patch, fixed indentation

It seems unfortunate that we need to create a UTF-8 copy of the entire sheet just so libxml2 can parse it; we went out of our way to avoid this in the past.

Is there a way to avoid this part of the change?

What guarantees that the parent style sheet will outlast the child one? Can m_parentStyleSheet become a stale pointer?

These are reference-counted objects, so a typical approach would be to use a RefPtr rather than a raw pointer. Unless there&apos;s a guarantee that the parent style sheet outlives this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62146</commentid>
    <comment_count>14</comment_count>
      <attachid>16995</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-11-23 20:49:41 -0800</bug_when>
    <thetext>Comment on attachment 16995
proposed patch, fixed indentation

(In reply to comment #9)
&gt; &gt; Can we use xmlCtxtReadMemory()?
&gt; No, because libxml2 doesn&apos;t expose xmlCreateMemoryParserContext().

Looks like the context for xmlCtxtReadMemory() is to be created with xmlNewParserCtxt(), which is exposed.

r-, because we want to avoid reconversion to UTF-8.  Sorry for slow reviewing - I&apos;m trying to get more familiar with XSLT ownership issues now!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80370</commentid>
    <comment_count>15</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2008-05-14 11:16:53 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 16995 [edit])
&gt; (In reply to comment #9)
&gt; &gt; &gt; Can we use xmlCtxtReadMemory()?
&gt; &gt; No, because libxml2 doesn&apos;t expose xmlCreateMemoryParserContext().
&gt; 

It does! (check http://xmlsoft.org/html/libxml-parserInternals.html#xmlCreateMemoryParserCtxt)

&gt; 
&gt; Looks like the context for xmlCtxtReadMemory() is to be created with
&gt; xmlNewParserCtxt(), which is exposed.

I see 3 choices here:
- use an xmlMemoryCtxt: XMLTokenizer::createMemoryParser does that too but we also do a UTF8 conversion (that should be solved).
- use the same approach as XMLTokenizer::createStringParser which avoids the conversion and would work here as we are parsing a well-formed document.
- use something else and in that case, avoid doing the initialization ourselves and thus avoid using xmlNewParserCtxt

IMHO, the second one seems the most promising here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87892</commentid>
    <comment_count>16</comment_count>
      <attachid>22661</attachid>
    <who name="Jonathan Haas">myrdred</who>
    <bug_when>2008-08-05 15:12:51 -0700</bug_when>
    <thetext>Created attachment 22661
new and improved patch with 100% less unnecessary UTF-8 conversions

Note: I can&apos;t really test this on a Mac, since the bug only reproes with ToT WebKit. Building and applying ToT libxml2 and libxslt ended up breaking libphp which complained about the &quot;wrong architecture&quot; on libexslt. The Internet said I should rebuild as 64-bit binaries, which completely horked the Mac and required that I reboot from DVD and copy over the old libxml/libxslt. But the bug reproes just fine with ToT libxml2/libxslt on Windows, and goes away with this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87916</commentid>
    <comment_count>17</comment_count>
      <attachid>22661</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-05 18:16:50 -0700</bug_when>
    <thetext>Comment on attachment 22661
new and improved patch with 100% less unnecessary UTF-8 conversions

Looks good except...

Should use spaces, not tabs:
9298     bool m_stylesheetDocTaken;
 99 	XSLStyleSheet* m_parentStyleSheet;

This needs a comment to explain why this is done:
+    if (parentStyleSheet()) {
+        xmlDictFree(ctxt-&gt;dict);
+        ctxt-&gt;dict = parentStyleSheet()-&gt;m_stylesheetDoc-&gt;dict;
+    }
Really the code could just use a comment or two in general to tell why we&apos;re stuffing away this parent document pointer, and under which circumstances we could ever stop...

Also, this needs a test case which demonstrates the crash.   Your test case should work under run-webkit-tests and should crash before your patch and not after your patch.

Thanks for the patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87978</commentid>
    <comment_count>18</comment_count>
      <attachid>22685</attachid>
    <who name="Jonathan Haas">myrdred</who>
    <bug_when>2008-08-06 11:58:29 -0700</bug_when>
    <thetext>Created attachment 22685
fixed

Thanks for the feedback. I fixed the spacing issue and added a comment explaining why this is necessary.

I can&apos;t make a regression test, because this doesn&apos;t repro in the stock build of WebKit. It only repros when using recent builds of libxml2 and libxslt. Apple ships binaries of these libraries with MacOS, and as part of the support libraries for the Windows build of WebKit, so this bug just doesn&apos;t happen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88001</commentid>
    <comment_count>19</comment_count>
    <who name="Jonathan Haas">myrdred</who>
    <bug_when>2008-08-06 16:06:47 -0700</bug_when>
    <thetext>Actually, please hold off on landing this patch, I&apos;m checking into something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88201</commentid>
    <comment_count>20</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-08-10 23:24:17 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Note: I can&apos;t really test this on a Mac, since the bug only reproes with ToT
&gt; WebKit. Building and applying ToT libxml2 and libxslt ended up breaking libphp

FWIW, it&apos;s not necessary to replace system versions of these libraries to test their behavior with WebKit - you can set a DYLD_LIBRARY_PATH environment variable, similarly to how run-safari sets DYLD_FRAMEWORK_PATH.

export DYLD_LIBRARY_PATH=/path/to/custom/libxml2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88202</commentid>
    <comment_count>21</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-08-10 23:29:13 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; I can&apos;t make a regression test, because this doesn&apos;t repro in the stock build
&gt; of WebKit. It only repros when using recent builds of libxml2 and libxslt.
&gt; Apple ships binaries of these libraries with MacOS, and as part of the support
&gt; libraries for the Windows build of WebKit, so this bug just doesn&apos;t happen.

You should still create a regression test for this none the less.  Apple won&apos;t continue to ship the same versions of libxml2 and libxslt for ever, and it is very important to ensure that the problem isn&apos;t reintroduced at some point in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89138</commentid>
    <comment_count>22</comment_count>
      <attachid>22944</attachid>
    <who name="Jonathan Haas">myrdred</who>
    <bug_when>2008-08-22 13:03:05 -0700</bug_when>
    <thetext>Created attachment 22944
latest patch

One more try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89146</commentid>
    <comment_count>23</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-08-22 16:21:42 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; One more try. 

What about Mark&apos;s comment about the regression test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89210</commentid>
    <comment_count>24</comment_count>
      <attachid>22944</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-08-24 15:14:39 -0700</bug_when>
    <thetext>Comment on attachment 22944
latest patch

Looks OK. I have a few thoughts and questions.

Mark Rowe requested a regression test; I&apos;d like to see the patch include one.

Since parentStyleSheet() is never used outside the XSLStyleSheet class, I don&apos;t think we need to define a function. If later we decide it&apos;s needed, that&apos;s OK, but it&apos;s slightly nicer to have tighter encapsulation and know no one outside the class looks at m_parentStyleSheet.

What guarantees that m_parentStyleSheet is not left pointing to a deleted object?

+    void setParentStyleSheet(XSLStyleSheet* parent) {
+       m_parentStyleSheet = parent; 
+       if (parent)
+          setOwnerDocument(parent-&gt;ownerDocument());
+    }

The opening brace is supposed to go on a separate line. This function is also getting long enough that it might be better to not put it inline. Our normal approach is to only use inlines for completely trivial functions unless there&apos;s a specific performance motivation for doing so.

Are there any callers left for XSLStyleSheet::setOwnerDocument()? If not, perhaps we should remove it.

I&apos;m going to say review- since I&apos;m hoping for a patch with a regression test. In a pinch I suppose we can land this without one. Let me know if you&apos;d like to do that -- you should even feel re-mark this patch for review if you think this should go in as-is even considering my comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97344</commentid>
    <comment_count>25</comment_count>
      <attachid>24827</attachid>
    <who name="Pam Greene (IRC:pamg)">pam</who>
    <bug_when>2008-10-31 17:31:57 -0700</bug_when>
    <thetext>Created attachment 24827
Patch addressing Darin&apos;s comments

Jonathan was working on Chromium but has since been called to work on some other things.  I&apos;m taking over getting his patch finished up.

&gt; Mark Rowe requested a regression test; I&apos;d like to see the patch include one.

Added.

&gt; Since parentStyleSheet() is never used outside the XSLStyleSheet class, I don&apos;t
&gt; think we need to define a function.

Removed.

&gt; What guarantees that m_parentStyleSheet is not left pointing to a deleted
&gt; object?

Sorry, I don&apos;t know this code that well; I&apos;m just working with the patch and tests.  If it&apos;s a concern, I&apos;ll ask Jonathan to weigh in.

&gt; +    void setParentStyleSheet(XSLStyleSheet* parent) {
&gt; +       m_parentStyleSheet = parent; 
&gt; +       if (parent)
&gt; +          setOwnerDocument(parent-&gt;ownerDocument());
&gt; +    }
&gt; 
&gt; The opening brace is supposed to go on a separate line. This function is also
&gt; getting long enough that it might be better to not put it inline.

Style fixed and method out-lined.

&gt; Are there any callers left for XSLStyleSheet::setOwnerDocument()? If not,
&gt; perhaps we should remove it.

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97465</commentid>
    <comment_count>26</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-03 09:35:49 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; &gt; What guarantees that m_parentStyleSheet is not left pointing to a deleted
&gt; &gt; object?
&gt; 
&gt; Sorry, I don&apos;t know this code that well; I&apos;m just working with the patch and
&gt; tests. If it&apos;s a concern, I&apos;ll ask Jonathan to weigh in.

Yes, it&apos;s a concern. That&apos;s why I asked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97466</commentid>
    <comment_count>27</comment_count>
      <attachid>24827</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-03 09:38:18 -0800</bug_when>
    <thetext>Comment on attachment 24827
Patch addressing Darin&apos;s comments

r=me

I&apos;d still like to understand the lifetime guarantee for the new m_parentStyleSheet data member.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97472</commentid>
    <comment_count>28</comment_count>
    <who name="Pam Greene (IRC:pamg)">pam</who>
    <bug_when>2008-11-03 10:18:00 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; Yes, it&apos;s a concern. That&apos;s why I asked.

Well, yes.  It was shorthand for &quot;if this is enough of a concern to warrant a reasonable amount of effort, as opposed to an offhand question&quot;. I was confused by the juxtaposition of your question and an r+ (and still am, but I&apos;ll get over it).

Anyway, I&apos;ll both land this today and ask Jonathan to stop by.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97476</commentid>
    <comment_count>29</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-03 10:29:12 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; Well, yes.  It was shorthand for &quot;if this is enough of a concern to warrant a
&gt; reasonable amount of effort, as opposed to an offhand question&quot;. I was confused
&gt; by the juxtaposition of your question and an r+ (and still am, but I&apos;ll get
&gt; over it).

I think the fix has value as is and I don&apos;t want to unnecessarily delay getting it checked in.

But I suspect that the lifetime of m_parentStyleSheet could be a real problem and lead to future bugs. So I think it&apos;s great that you&apos;re going to look into it some more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97638</commentid>
    <comment_count>30</comment_count>
    <who name="Pam Greene (IRC:pamg)">pam</who>
    <bug_when>2008-11-04 16:26:44 -0800</bug_when>
    <thetext>Landed in r38115.  Over to Jonathan for more info; keeping the bug open pending that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97724</commentid>
    <comment_count>31</comment_count>
    <who name="Jonathan Haas">jhaas</who>
    <bug_when>2008-11-05 12:41:05 -0800</bug_when>
    <thetext>The child stylesheet is owned by (and a RefPtr to it is held by) an XSLImportRule. The XSLImportRule is in turn a child of (and a RefPtr to it is kept by) the parent sheet. The destruction of the parent sheet will destroy all its children, including the XSLImportRule, whose destruction in turn will trigger the destruction of the child sheet.

But actually, now I&apos;m questioning whether it&apos;s possible for the same XSLStyleSheet object to be referenced by multiple XSLImportRules. If so, there could be problems that would go beyond having a parent sheet destroyed before its children... there could be inappropriate behavior if an XSLStyleSheet is reused by a different parent with different shared dictionary entries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97725</commentid>
    <comment_count>32</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-05 12:51:46 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; The destruction of the parent sheet will destroy all
&gt; its children

I don&apos;t think that&apos;s correct. It will deref all the children, but that won&apos;t cause them to be destroyed. For example, some script might be holding a reference to one of the rules in a variable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98272</commentid>
    <comment_count>33</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-11-11 01:36:41 -0800</bug_when>
    <thetext>The buildbot is showing a bunch of XSL-related memory leaks which I suspect may have been caused by this patch: &lt;http://build.webkit.org/results/trunk-mac-intel-debug/5482/DumpRenderTree2-leaks.txt&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98292</commentid>
    <comment_count>34</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-11 08:56:46 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; The buildbot is showing a bunch of XSL-related memory leaks which I suspect may
&gt; have been caused by this patch:

Is someone going to tackle these, or do I need to work on them myself?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98575</commentid>
    <comment_count>35</comment_count>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2008-11-12 19:08:18 -0800</bug_when>
    <thetext>I think i have a fix for the leaks, but I need to verify that I didn&apos;t reintroduce the crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98581</commentid>
    <comment_count>36</comment_count>
      <attachid>25116</attachid>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2008-11-12 21:59:58 -0800</bug_when>
    <thetext>Created attachment 25116
patch fo fix leaks

Patch for the leaks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98582</commentid>
    <comment_count>37</comment_count>
      <attachid>25116</attachid>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2008-11-12 22:06:26 -0800</bug_when>
    <thetext>Comment on attachment 25116
patch fo fix leaks

Mark Rowe reviewed it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98584</commentid>
    <comment_count>38</comment_count>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2008-11-12 22:10:08 -0800</bug_when>
    <thetext>Committed leak fix in 38362</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101035</commentid>
    <comment_count>39</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-12-02 12:01:44 -0800</bug_when>
    <thetext>Looks like this has been landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101037</commentid>
    <comment_count>40</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-12-02 12:10:12 -0800</bug_when>
    <thetext>Per comment 30, this is kept open intentionally. It may make sense to file a follow-up bug for further investigation though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101052</commentid>
    <comment_count>41</comment_count>
      <attachid>24827</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-12-02 13:07:30 -0800</bug_when>
    <thetext>Comment on attachment 24827
Patch addressing Darin&apos;s comments

Clearing r+ since this was landed as:
http://trac.webkit.org/changeset/38115</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101053</commentid>
    <comment_count>42</comment_count>
      <attachid>25116</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-12-02 13:07:47 -0800</bug_when>
    <thetext>Comment on attachment 25116
patch fo fix leaks

Clearing r+ since this was landed as:
http://trac.webkit.org/changeset/38362</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16889</attachid>
            <date>2007-10-26 14:56:34 -0700</date>
            <delta_ts>2007-10-26 15:00:47 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>mypatch.txt</filename>
            <type>text/plain</type>
            <size>5412</size>
            <attacher name="Jonathan Haas">myrdred</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzEyMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMDctMTAtMjYgIEpvbmF0aGFuIEhhYXMgIDxteXJkcmVkQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBNYXR0IFBlcnJ5LgorCisgICAgICAgIEZpeGVk
IGEgcG90ZW50aWFsbHkgbWVtb3J5LWNvcnJ1cHRpbmcgcHJvYmxlbSB3aXRoIG5lc3RlZCBYU0wg
c3R5bGVzaGVldHMuCisKKyAgICAgICAgKiB4bWwvWFNMSW1wb3J0UnVsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpYU0xJbXBvcnRSdWxlOjpzZXRYU0xTdHlsZVNoZWV0KToKKyAgICAgICAgKiB4
bWwvWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xTdHlsZVNoZWV0OjpY
U0xTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlhTTFN0eWxlU2hlZXQ6OnBhcnNlU3Ry
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlhTTFN0eWxlU2hlZXQ6OmxvYWRDaGlsZFNoZWV0cyk6
CisgICAgICAgICogeG1sL1hTTFN0eWxlU2hlZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFN0
eWxlU2hlZXQ6OnBhcmVudFN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVT
aGVldDo6c2V0UGFyZW50U3R5bGVTaGVldCk6CisKIDIwMDctMTAtMjYgIEFkZWxlIFBldGVyc29u
ICA8YWRlbGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlci4KSW5kZXg6
IFdlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUveG1s
L1hTTEltcG9ydFJ1bGUuY3BwCShyZXZpc2lvbiAyNzExOSkKKysrIFdlYkNvcmUveG1sL1hTTElt
cG9ydFJ1bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgWFNMSW1w
b3J0UnVsZTo6c2V0WFNMU3R5bGVTaGVldChjb24KICAgICAKICAgICBYU0xTdHlsZVNoZWV0KiBw
YXJlbnQgPSBwYXJlbnRTdHlsZVNoZWV0KCk7CiAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgbV9z
dHlsZVNoZWV0LT5zZXRPd25lckRvY3VtZW50KHBhcmVudC0+b3duZXJEb2N1bWVudCgpKTsKKyAg
ICAgICAgbV9zdHlsZVNoZWV0LT5zZXRQYXJlbnRTdHlsZVNoZWV0KHBhcmVudCk7CiAKICAgICBt
X3N0eWxlU2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0KTsKICAgICBtX2xvYWRpbmcgPSBmYWxzZTsK
SW5kZXg6IFdlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUveG1sL1hTTFN0eWxlU2hlZXQuY3BwCShyZXZpc2lvbiAyNzExOSkKKysrIFdlYkNvcmUveG1s
L1hTTFN0eWxlU2hlZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw5IEBAIFNPRlRf
TElOSyhsaWJ4c2x0LCB4c2x0TG9hZFN0eWxlc2hlZXRQSSwKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCisjZGVmaW5lIElTX0JMQU5LX05PREUobikgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgKCgobiktPnR5cGUgPT0gWE1MX1RFWFRfTk9ERSkg
JiYgKHhzbHRJc0JsYW5rKChuKS0+Y29udGVudCkpKQorICAgIAogWFNMU3R5bGVTaGVldDo6WFNM
U3R5bGVTaGVldChYU0xJbXBvcnRSdWxlKiBwYXJlbnRSdWxlLCBjb25zdCBTdHJpbmcmIGhyZWYp
CiAgICAgOiBTdHlsZVNoZWV0KHBhcmVudFJ1bGUsIGhyZWYpCiAgICAgLCBtX293bmVyRG9jdW1l
bnQoMCkKQEAgLTU0LDYgKzU3LDcgQEAgWFNMU3R5bGVTaGVldDo6WFNMU3R5bGVTaGVldChYU0xJ
bXBvcnRSdQogICAgICwgbV9lbWJlZGRlZChmYWxzZSkKICAgICAsIG1fcHJvY2Vzc2VkKGZhbHNl
KSAvLyBDaGlsZCBzaGVldHMgZ2V0IG1hcmtlZCBhcyBwcm9jZXNzZWQgd2hlbiB0aGUgbGlieHNs
dCBlbmdpbmUgaGFzIGZpbmFsbHkgc2VlbiB0aGVtLgogICAgICwgbV9zdHlsZXNoZWV0RG9jVGFr
ZW4oZmFsc2UpCisgICAgLCBtX3BhcmVudFN0eWxlU2hlZXQoMCkKIHsKIH0KIApAQCAtNjQsNiAr
NjgsNyBAQCBYU0xTdHlsZVNoZWV0OjpYU0xTdHlsZVNoZWV0KE5vZGUqIHBhcmVuCiAgICAgLCBt
X2VtYmVkZGVkKGVtYmVkZGVkKQogICAgICwgbV9wcm9jZXNzZWQodHJ1ZSkgLy8gVGhlIHJvb3Qg
c2hlZXQgc3RhcnRzIG9mZiBwcm9jZXNzZWQuCiAgICAgLCBtX3N0eWxlc2hlZXREb2NUYWtlbihm
YWxzZSkKKyAgICAsIG1fcGFyZW50U3R5bGVTaGVldCgwKQogewogfQogCkBAIC0xMzQsOSArMTM5
LDI2IEBAIGJvb2wgWFNMU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcoY29uc3QgU3QKICAgICBpZiAo
IW1fc3R5bGVzaGVldERvY1Rha2VuKQogICAgICAgICB4bWxGcmVlRG9jKG1fc3R5bGVzaGVldERv
Yyk7CiAgICAgbV9zdHlsZXNoZWV0RG9jVGFrZW4gPSBmYWxzZTsKLSAgICBtX3N0eWxlc2hlZXRE
b2MgPSB4bWxSZWFkTWVtb3J5KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHN0cmluZy5j
aGFyYWN0ZXJzKCkpLCBzdHJpbmcubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpLAorCisgICAgLy8g
VGhlIHBhcmVudCBzdHlsZXNoZWV0IGJ1aWx0IGEgZGljdGlvbmFyeSBvZiBzdHJpbmdzIGFzIGl0
IHBhcnNlZC4gVGhlCisgICAgLy8gY2hpbGQgd2lsbCBhcyB3ZWxsLiBUaGUgdHJhbnNmb3JtZWQg
ZG9jdW1lbnQgd2lsbCBjb250YWluIHBvaW50ZXJzIHRvCisgICAgLy8gc3RyaW5ncyBpbiBib3Ro
IGRpY3Rpb25hcmllcywgYnV0IHdpbGwgb25seSBiZSBhd2FyZSBvZiB0aGUgcGFyZW50J3MKKyAg
ICAvLyBJZiB0aGUgY2hpbGQgaXMgYWxsb3dlZCB0byBidWlsZCBpdHMgb3duIGRpY3Rpb25hcnks
IHRoZSB0cmFuc2Zvcm1lZAorICAgIC8vIGRvYyB3aWxsIGJlbGlldmUgdGhhdCBpdCBvd25zIHRo
ZSBzdHJpbmdzIGFuZCB3aWxsIGF0dGVtcHQgdG8gZnJlZQorICAgIC8vIHRoZW0uIEJhZG5lc3Mg
d2lsbCBlbnN1ZS4gCisKKyAgICBDU3RyaW5nIHV0ZjggPSBzdHJpbmcudXRmOCgpOworICAgIGNv
bnN0IHhtbENoYXIqIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgeG1sQ2hhcio+KHV0
ZjguZGF0YSgpKTsKKyAgICB4bWxQYXJzZXJDdHh0UHRyIGN0eHQgPSB4bWxDcmVhdGVEb2NQYXJz
ZXJDdHh0KGJ1ZmZlcik7CisKKyAgICBpZiAocGFyZW50U3R5bGVTaGVldCgpKSB7CisgICAgICB4
bWxEaWN0RnJlZShjdHh0LT5kaWN0KTsKKyAgICAgIGN0eHQtPmRpY3QgPSBwYXJlbnRTdHlsZVNo
ZWV0KCktPm1fc3R5bGVzaGVldERvYy0+ZGljdDsKKyAgICB9CisKKyAgICBtX3N0eWxlc2hlZXRE
b2MgPSB4bWxDdHh0UmVhZERvYyhjdHh0LCBidWZmZXIsIAogICAgICAgICBtX293bmVyRG9jdW1l
bnQtPlVSTCgpLmFzY2lpKCksCi0gICAgICAgIEJPTUhpZ2hCeXRlID09IDB4RkYgPyAiVVRGLTE2
TEUiIDogIlVURi0xNkJFIiwgCisgICAgICAgICJVVEYtOCIsICAvLyB3aHkgaXMgdGhpcyBuZWNl
c3Nhcnk/IHhtbFJlYWREb2Mgb25seSB3b3JrcyBvbiBVVEYtOAogICAgICAgICBYTUxfUEFSU0Vf
Tk9FTlQgfCBYTUxfUEFSU0VfRFREQVRUUiB8IFhNTF9QQVJTRV9OT0VSUk9SIHwgWE1MX1BBUlNF
X05PV0FSTklORyB8IFhNTF9QQVJTRV9OT0NEQVRBKTsKICAgICBsb2FkQ2hpbGRTaGVldHMoKTsK
ICAgICBzZXRMb2FkZXJGb3JMaWJYTUxDYWxsYmFja3MoMCk7CkBAIC0xNzEsMTEgKzE5MywxMSBA
QCB2b2lkIFhTTFN0eWxlU2hlZXQ6OmxvYWRDaGlsZFNoZWV0cygpCiAgICAgICAgIC8vIEltcG9y
dHMgbXVzdCBvY2N1ciBmaXJzdC4KICAgICAgICAgeG1sTm9kZVB0ciBjdXJyID0gc3R5bGVzaGVl
dFJvb3QtPmNoaWxkcmVuOwogICAgICAgICB3aGlsZSAoY3VycikgewotICAgICAgICAgICAgaWYg
KGN1cnItPnR5cGUgIT0gWE1MX0VMRU1FTlRfTk9ERSkgeworICAgICAgICAgICAgaWYgKElTX0JM
QU5LX05PREUoY3VycikpIHsKICAgICAgICAgICAgICAgICBjdXJyID0gY3Vyci0+bmV4dDsKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChJ
U19YU0xUX0VMRU0oY3VycikgJiYgSVNfWFNMVF9OQU1FKGN1cnIsICJpbXBvcnQiKSkgeworICAg
ICAgICAgICAgaWYgKGN1cnItPnR5cGUgPT0gWE1MX0VMRU1FTlRfTk9ERSAmJiBJU19YU0xUX0VM
RU0oY3VycikgJiYgSVNfWFNMVF9OQU1FKGN1cnIsICJpbXBvcnQiKSkgewogICAgICAgICAgICAg
ICAgIHhtbENoYXIqIHVyaVJlZiA9IHhzbHRHZXROc1Byb3AoY3VyciwgKGNvbnN0IHhtbENoYXIq
KSJocmVmIiwgWFNMVF9OQU1FU1BBQ0UpOyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICBsb2FkQ2hpbGRTaGVldChEZXByZWNhdGVkU3RyaW5nOjpmcm9tVXRmOCgoY29uc3QgY2hhciop
dXJpUmVmKSk7CiAgICAgICAgICAgICAgICAgeG1sRnJlZSh1cmlSZWYpOwpJbmRleDogV2ViQ29y
ZS94bWwvWFNMU3R5bGVTaGVldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUveG1sL1hTTFN0eWxl
U2hlZXQuaAkocmV2aXNpb24gMjcxMTkpCisrKyBXZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDEzIEBAIHB1YmxpYzoKIAogICAgIERvY0xvYWRl
ciogZG9jTG9hZGVyKCk7CiAKKyAgICBYU0xTdHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0KCkg
eyByZXR1cm4gbV9wYXJlbnRTdHlsZVNoZWV0OyB9CisgICAgdm9pZCBzZXRQYXJlbnRTdHlsZVNo
ZWV0KFhTTFN0eWxlU2hlZXQqIHBhcmVudCkgeyAKKyAgICAgIG1fcGFyZW50U3R5bGVTaGVldCA9
IHBhcmVudDsgCisgICAgICBpZiAocGFyZW50KQorICAgICAgICBzZXRPd25lckRvY3VtZW50KHBh
cmVudC0+b3duZXJEb2N1bWVudCgpKTsKKyAgICB9CisKICAgICBEb2N1bWVudCogb3duZXJEb2N1
bWVudCgpIHsgcmV0dXJuIG1fb3duZXJEb2N1bWVudDsgfQogICAgIHZvaWQgc2V0T3duZXJEb2N1
bWVudChEb2N1bWVudCogZG9jKSB7IG1fb3duZXJEb2N1bWVudCA9IGRvYzsgfQogCkBAIC03NSw2
ICs4Miw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1fZW1iZWRkZWQ7CiAgICAgYm9vbCBtX3By
b2Nlc3NlZDsKICAgICBib29sIG1fc3R5bGVzaGVldERvY1Rha2VuOworICAgIFhTTFN0eWxlU2hl
ZXQqIG1fcGFyZW50U3R5bGVTaGVldDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16890</attachid>
            <date>2007-10-26 15:24:42 -0700</date>
            <delta_ts>2007-11-02 11:30:19 -0700</delta_ts>
            <desc>proposed patch take 2, accidentally included stuff I didn&apos;t mean to</desc>
            <filename>mypatch.txt</filename>
            <type>text/plain</type>
            <size>4296</size>
            <attacher name="Jonathan Haas">myrdred</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzEyNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMDctMTAtMjYgIEpvbmF0aGFuIEhhYXMgIDxteXJkcmVkQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBNYXR0IFBlcnJ5LgorCisgICAgICAgIEZpeGVk
IGEgcG90ZW50aWFsbHkgbWVtb3J5LWNvcnJ1cHRpbmcgcHJvYmxlbSB3aXRoIG5lc3RlZCBYU0wg
c3R5bGVzaGVldHMuCisKKyAgICAgICAgKiB4bWwvWFNMSW1wb3J0UnVsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpYU0xJbXBvcnRSdWxlOjpzZXRYU0xTdHlsZVNoZWV0KToKKyAgICAgICAgKiB4
bWwvWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xTdHlsZVNoZWV0OjpY
U0xTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlhTTFN0eWxlU2hlZXQ6OnBhcnNlU3Ry
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlhTTFN0eWxlU2hlZXQ6OmxvYWRDaGlsZFNoZWV0cyk6
CisgICAgICAgICogeG1sL1hTTFN0eWxlU2hlZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFN0
eWxlU2hlZXQ6OnBhcmVudFN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVT
aGVldDo6c2V0UGFyZW50U3R5bGVTaGVldCk6CisKIDIwMDctMTAtMjYgIFNhbSBXZWluaWcgIDxz
YW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGVsZSBQZXRlcnNvbi4KSW5k
ZXg6IFdlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
eG1sL1hTTEltcG9ydFJ1bGUuY3BwCShyZXZpc2lvbiAyNzExOSkKKysrIFdlYkNvcmUveG1sL1hT
TEltcG9ydFJ1bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgWFNM
SW1wb3J0UnVsZTo6c2V0WFNMU3R5bGVTaGVldChjb24KICAgICAKICAgICBYU0xTdHlsZVNoZWV0
KiBwYXJlbnQgPSBwYXJlbnRTdHlsZVNoZWV0KCk7CiAgICAgaWYgKHBhcmVudCkKLSAgICAgICAg
bV9zdHlsZVNoZWV0LT5zZXRPd25lckRvY3VtZW50KHBhcmVudC0+b3duZXJEb2N1bWVudCgpKTsK
KyAgICAgICAgbV9zdHlsZVNoZWV0LT5zZXRQYXJlbnRTdHlsZVNoZWV0KHBhcmVudCk7CiAKICAg
ICBtX3N0eWxlU2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0KTsKICAgICBtX2xvYWRpbmcgPSBmYWxz
ZTsKSW5kZXg6IFdlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUveG1sL1hTTFN0eWxlU2hlZXQuY3BwCShyZXZpc2lvbiAyNzExOSkKKysrIFdlYkNvcmUv
eG1sL1hTTFN0eWxlU2hlZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3IEBAIFhT
TFN0eWxlU2hlZXQ6OlhTTFN0eWxlU2hlZXQoWFNMSW1wb3J0UnUKICAgICAsIG1fZW1iZWRkZWQo
ZmFsc2UpCiAgICAgLCBtX3Byb2Nlc3NlZChmYWxzZSkgLy8gQ2hpbGQgc2hlZXRzIGdldCBtYXJr
ZWQgYXMgcHJvY2Vzc2VkIHdoZW4gdGhlIGxpYnhzbHQgZW5naW5lIGhhcyBmaW5hbGx5IHNlZW4g
dGhlbS4KICAgICAsIG1fc3R5bGVzaGVldERvY1Rha2VuKGZhbHNlKQorICAgICwgbV9wYXJlbnRT
dHlsZVNoZWV0KDApCiB7CiB9CiAKQEAgLTY0LDYgKzY1LDcgQEAgWFNMU3R5bGVTaGVldDo6WFNM
U3R5bGVTaGVldChOb2RlKiBwYXJlbgogICAgICwgbV9lbWJlZGRlZChlbWJlZGRlZCkKICAgICAs
IG1fcHJvY2Vzc2VkKHRydWUpIC8vIFRoZSByb290IHNoZWV0IHN0YXJ0cyBvZmYgcHJvY2Vzc2Vk
LgogICAgICwgbV9zdHlsZXNoZWV0RG9jVGFrZW4oZmFsc2UpCisgICAgLCBtX3BhcmVudFN0eWxl
U2hlZXQoMCkKIHsKIH0KIApAQCAtMTM0LDkgKzEzNiwyNiBAQCBib29sIFhTTFN0eWxlU2hlZXQ6
OnBhcnNlU3RyaW5nKGNvbnN0IFN0CiAgICAgaWYgKCFtX3N0eWxlc2hlZXREb2NUYWtlbikKICAg
ICAgICAgeG1sRnJlZURvYyhtX3N0eWxlc2hlZXREb2MpOwogICAgIG1fc3R5bGVzaGVldERvY1Rh
a2VuID0gZmFsc2U7Ci0gICAgbV9zdHlsZXNoZWV0RG9jID0geG1sUmVhZE1lbW9yeShyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihzdHJpbmcuY2hhcmFjdGVycygpKSwgc3RyaW5nLmxlbmd0
aCgpICogc2l6ZW9mKFVDaGFyKSwKKworICAgIC8vIFRoZSBwYXJlbnQgc3R5bGVzaGVldCBidWls
dCBhIGRpY3Rpb25hcnkgb2Ygc3RyaW5ncyBhcyBpdCBwYXJzZWQuIFRoZQorICAgIC8vIGNoaWxk
IHdpbGwgYXMgd2VsbC4gVGhlIHRyYW5zZm9ybWVkIGRvY3VtZW50IHdpbGwgY29udGFpbiBwb2lu
dGVycyB0bworICAgIC8vIHN0cmluZ3MgaW4gYm90aCBkaWN0aW9uYXJpZXMsIGJ1dCB3aWxsIG9u
bHkgYmUgYXdhcmUgb2YgdGhlIHBhcmVudCdzCisgICAgLy8gSWYgdGhlIGNoaWxkIGlzIGFsbG93
ZWQgdG8gYnVpbGQgaXRzIG93biBkaWN0aW9uYXJ5LCB0aGUgdHJhbnNmb3JtZWQKKyAgICAvLyBk
b2Mgd2lsbCBiZWxpZXZlIHRoYXQgaXQgb3ducyB0aGUgc3RyaW5ncyBhbmQgd2lsbCBhdHRlbXB0
IHRvIGZyZWUKKyAgICAvLyB0aGVtLiBCYWRuZXNzIHdpbGwgZW5zdWUuIAorCisgICAgQ1N0cmlu
ZyB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKKyAgICBjb25zdCB4bWxDaGFyKiBidWZmZXIgPSByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHhtbENoYXIqPih1dGY4LmRhdGEoKSk7CisgICAgeG1sUGFyc2Vy
Q3R4dFB0ciBjdHh0ID0geG1sQ3JlYXRlRG9jUGFyc2VyQ3R4dChidWZmZXIpOworCisgICAgaWYg
KHBhcmVudFN0eWxlU2hlZXQoKSkgeworICAgICAgeG1sRGljdEZyZWUoY3R4dC0+ZGljdCk7Cisg
ICAgICBjdHh0LT5kaWN0ID0gcGFyZW50U3R5bGVTaGVldCgpLT5tX3N0eWxlc2hlZXREb2MtPmRp
Y3Q7CisgICAgfQorCisgICAgbV9zdHlsZXNoZWV0RG9jID0geG1sQ3R4dFJlYWREb2MoY3R4dCwg
YnVmZmVyLCAKICAgICAgICAgbV9vd25lckRvY3VtZW50LT5VUkwoKS5hc2NpaSgpLAotICAgICAg
ICBCT01IaWdoQnl0ZSA9PSAweEZGID8gIlVURi0xNkxFIiA6ICJVVEYtMTZCRSIsIAorICAgICAg
ICAiVVRGLTgiLCAgLy8gd2h5IGlzIHRoaXMgbmVjZXNzYXJ5PyB4bWxSZWFkRG9jIG9ubHkgd29y
a3Mgb24gVVRGLTgKICAgICAgICAgWE1MX1BBUlNFX05PRU5UIHwgWE1MX1BBUlNFX0RUREFUVFIg
fCBYTUxfUEFSU0VfTk9FUlJPUiB8IFhNTF9QQVJTRV9OT1dBUk5JTkcgfCBYTUxfUEFSU0VfTk9D
REFUQSk7CiAgICAgbG9hZENoaWxkU2hlZXRzKCk7CiAgICAgc2V0TG9hZGVyRm9yTGliWE1MQ2Fs
bGJhY2tzKDApOwpJbmRleDogV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXQuaAkocmV2aXNpb24gMjcxMTkpCisrKyBXZWJD
b3JlL3htbC9YU0xTdHlsZVNoZWV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDEzIEBA
IHB1YmxpYzoKIAogICAgIERvY0xvYWRlciogZG9jTG9hZGVyKCk7CiAKKyAgICBYU0xTdHlsZVNo
ZWV0KiBwYXJlbnRTdHlsZVNoZWV0KCkgeyByZXR1cm4gbV9wYXJlbnRTdHlsZVNoZWV0OyB9Cisg
ICAgdm9pZCBzZXRQYXJlbnRTdHlsZVNoZWV0KFhTTFN0eWxlU2hlZXQqIHBhcmVudCkgeyAKKyAg
ICAgIG1fcGFyZW50U3R5bGVTaGVldCA9IHBhcmVudDsgCisgICAgICBpZiAocGFyZW50KQorICAg
ICAgICBzZXRPd25lckRvY3VtZW50KHBhcmVudC0+b3duZXJEb2N1bWVudCgpKTsKKyAgICB9CisK
ICAgICBEb2N1bWVudCogb3duZXJEb2N1bWVudCgpIHsgcmV0dXJuIG1fb3duZXJEb2N1bWVudDsg
fQogICAgIHZvaWQgc2V0T3duZXJEb2N1bWVudChEb2N1bWVudCogZG9jKSB7IG1fb3duZXJEb2N1
bWVudCA9IGRvYzsgfQogCkBAIC03NSw2ICs4Miw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1f
ZW1iZWRkZWQ7CiAgICAgYm9vbCBtX3Byb2Nlc3NlZDsKICAgICBib29sIG1fc3R5bGVzaGVldERv
Y1Rha2VuOworICAgIFhTTFN0eWxlU2hlZXQqIG1fcGFyZW50U3R5bGVTaGVldDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="review"
          id="7155"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16995</attachid>
            <date>2007-11-02 11:29:59 -0700</date>
            <delta_ts>2008-08-05 15:12:51 -0700</delta_ts>
            <desc>proposed patch, fixed indentation</desc>
            <filename>mypatch2.txt</filename>
            <type>text/plain</type>
            <size>4280</size>
            <attacher name="Jonathan Haas">myrdred</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzEyNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMDctMTAtMjYgIEpvbmF0aGFuIEhhYXMgIDxteXJkcmVkQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBNYXR0IFBlcnJ5LgorCisgICAgICAgIEZpeGVk
IGEgcG90ZW50aWFsbHkgbWVtb3J5LWNvcnJ1cHRpbmcgcHJvYmxlbSB3aXRoIG5lc3RlZCBYU0wg
c3R5bGVzaGVldHMuCisKKyAgICAgICAgKiB4bWwvWFNMSW1wb3J0UnVsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpYU0xJbXBvcnRSdWxlOjpzZXRYU0xTdHlsZVNoZWV0KToKKyAgICAgICAgKiB4
bWwvWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xTdHlsZVNoZWV0OjpY
U0xTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlhTTFN0eWxlU2hlZXQ6OnBhcnNlU3Ry
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlhTTFN0eWxlU2hlZXQ6OmxvYWRDaGlsZFNoZWV0cyk6
CisgICAgICAgICogeG1sL1hTTFN0eWxlU2hlZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFN0
eWxlU2hlZXQ6OnBhcmVudFN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVT
aGVldDo6c2V0UGFyZW50U3R5bGVTaGVldCk6CisKIDIwMDctMTAtMjYgIFNhbSBXZWluaWcgIDxz
YW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGVsZSBQZXRlcnNvbi4KSW5k
ZXg6IFdlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
eG1sL1hTTEltcG9ydFJ1bGUuY3BwCShyZXZpc2lvbiAyNzExOSkKKysrIFdlYkNvcmUveG1sL1hT
TEltcG9ydFJ1bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgWFNM
SW1wb3J0UnVsZTo6c2V0WFNMU3R5bGVTaGVldChjb24KICAgICAKICAgICBYU0xTdHlsZVNoZWV0
KiBwYXJlbnQgPSBwYXJlbnRTdHlsZVNoZWV0KCk7CiAgICAgaWYgKHBhcmVudCkKLSAgICAgICAg
bV9zdHlsZVNoZWV0LT5zZXRPd25lckRvY3VtZW50KHBhcmVudC0+b3duZXJEb2N1bWVudCgpKTsK
KyAgICAgICAgbV9zdHlsZVNoZWV0LT5zZXRQYXJlbnRTdHlsZVNoZWV0KHBhcmVudCk7CiAKICAg
ICBtX3N0eWxlU2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0KTsKICAgICBtX2xvYWRpbmcgPSBmYWxz
ZTsKSW5kZXg6IFdlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUveG1sL1hTTFN0eWxlU2hlZXQuY3BwCShyZXZpc2lvbiAyNzExOSkKKysrIFdlYkNvcmUv
eG1sL1hTTFN0eWxlU2hlZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3IEBAIFhT
TFN0eWxlU2hlZXQ6OlhTTFN0eWxlU2hlZXQoWFNMSW1wb3J0UnUKICAgICAsIG1fZW1iZWRkZWQo
ZmFsc2UpCiAgICAgLCBtX3Byb2Nlc3NlZChmYWxzZSkgLy8gQ2hpbGQgc2hlZXRzIGdldCBtYXJr
ZWQgYXMgcHJvY2Vzc2VkIHdoZW4gdGhlIGxpYnhzbHQgZW5naW5lIGhhcyBmaW5hbGx5IHNlZW4g
dGhlbS4KICAgICAsIG1fc3R5bGVzaGVldERvY1Rha2VuKGZhbHNlKQorICAgICwgbV9wYXJlbnRT
dHlsZVNoZWV0KDApCiB7CiB9CiAKQEAgLTY0LDYgKzY1LDcgQEAgWFNMU3R5bGVTaGVldDo6WFNM
U3R5bGVTaGVldChOb2RlKiBwYXJlbgogICAgICwgbV9lbWJlZGRlZChlbWJlZGRlZCkKICAgICAs
IG1fcHJvY2Vzc2VkKHRydWUpIC8vIFRoZSByb290IHNoZWV0IHN0YXJ0cyBvZmYgcHJvY2Vzc2Vk
LgogICAgICwgbV9zdHlsZXNoZWV0RG9jVGFrZW4oZmFsc2UpCisgICAgLCBtX3BhcmVudFN0eWxl
U2hlZXQoMCkKIHsKIH0KIApAQCAtMTM0LDkgKzEzNiwyNiBAQCBib29sIFhTTFN0eWxlU2hlZXQ6
OnBhcnNlU3RyaW5nKGNvbnN0IFN0CiAgICAgaWYgKCFtX3N0eWxlc2hlZXREb2NUYWtlbikKICAg
ICAgICAgeG1sRnJlZURvYyhtX3N0eWxlc2hlZXREb2MpOwogICAgIG1fc3R5bGVzaGVldERvY1Rh
a2VuID0gZmFsc2U7Ci0gICAgbV9zdHlsZXNoZWV0RG9jID0geG1sUmVhZE1lbW9yeShyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihzdHJpbmcuY2hhcmFjdGVycygpKSwgc3RyaW5nLmxlbmd0
aCgpICogc2l6ZW9mKFVDaGFyKSwKKworICAgIC8vIFRoZSBwYXJlbnQgc3R5bGVzaGVldCBidWls
dCBhIGRpY3Rpb25hcnkgb2Ygc3RyaW5ncyBhcyBpdCBwYXJzZWQuIFRoZQorICAgIC8vIGNoaWxk
IHdpbGwgYXMgd2VsbC4gVGhlIHRyYW5zZm9ybWVkIGRvY3VtZW50IHdpbGwgY29udGFpbiBwb2lu
dGVycyB0bworICAgIC8vIHN0cmluZ3MgaW4gYm90aCBkaWN0aW9uYXJpZXMsIGJ1dCB3aWxsIG9u
bHkgYmUgYXdhcmUgb2YgdGhlIHBhcmVudCdzCisgICAgLy8gSWYgdGhlIGNoaWxkIGlzIGFsbG93
ZWQgdG8gYnVpbGQgaXRzIG93biBkaWN0aW9uYXJ5LCB0aGUgdHJhbnNmb3JtZWQKKyAgICAvLyBk
b2Mgd2lsbCBiZWxpZXZlIHRoYXQgaXQgb3ducyB0aGUgc3RyaW5ncyBhbmQgd2lsbCBhdHRlbXB0
IHRvIGZyZWUKKyAgICAvLyB0aGVtLiBCYWRuZXNzIHdpbGwgZW5zdWUuIAorCisgICAgQ1N0cmlu
ZyB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKKyAgICBjb25zdCB4bWxDaGFyKiBidWZmZXIgPSByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHhtbENoYXIqPih1dGY4LmRhdGEoKSk7CisgICAgeG1sUGFyc2Vy
Q3R4dFB0ciBjdHh0ID0geG1sQ3JlYXRlRG9jUGFyc2VyQ3R4dChidWZmZXIpOworCisgICAgaWYg
KHBhcmVudFN0eWxlU2hlZXQoKSkgeworICAgICAgICB4bWxEaWN0RnJlZShjdHh0LT5kaWN0KTsK
KyAgICAgICAgY3R4dC0+ZGljdCA9IHBhcmVudFN0eWxlU2hlZXQoKS0+bV9zdHlsZXNoZWV0RG9j
LT5kaWN0OworICAgIH0KKworICAgIG1fc3R5bGVzaGVldERvYyA9IHhtbEN0eHRSZWFkRG9jKGN0
eHQsIGJ1ZmZlciwgCiAgICAgICAgIG1fb3duZXJEb2N1bWVudC0+VVJMKCkuYXNjaWkoKSwKLSAg
ICAgICAgQk9NSGlnaEJ5dGUgPT0gMHhGRiA/ICJVVEYtMTZMRSIgOiAiVVRGLTE2QkUiLCAKKyAg
ICAgICAgIlVURi04IiwgIC8vIHhtbFJlYWREb2MgcmVxdWlyZXMgVVRGLTgKICAgICAgICAgWE1M
X1BBUlNFX05PRU5UIHwgWE1MX1BBUlNFX0RUREFUVFIgfCBYTUxfUEFSU0VfTk9FUlJPUiB8IFhN
TF9QQVJTRV9OT1dBUk5JTkcgfCBYTUxfUEFSU0VfTk9DREFUQSk7CiAgICAgbG9hZENoaWxkU2hl
ZXRzKCk7CiAgICAgc2V0TG9hZGVyRm9yTGliWE1MQ2FsbGJhY2tzKDApOwpJbmRleDogV2ViQ29y
ZS94bWwvWFNMU3R5bGVTaGVldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUveG1sL1hTTFN0eWxl
U2hlZXQuaAkocmV2aXNpb24gMjcxMTkpCisrKyBXZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDEzIEBAIHB1YmxpYzoKIAogICAgIERvY0xvYWRl
ciogZG9jTG9hZGVyKCk7CiAKKyAgICBYU0xTdHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0KCkg
eyByZXR1cm4gbV9wYXJlbnRTdHlsZVNoZWV0OyB9CisgICAgdm9pZCBzZXRQYXJlbnRTdHlsZVNo
ZWV0KFhTTFN0eWxlU2hlZXQqIHBhcmVudCkgeyAKKyAgICAgICAgbV9wYXJlbnRTdHlsZVNoZWV0
ID0gcGFyZW50OyAKKyAgICAgICAgaWYgKHBhcmVudCkKKyAgICAgICAgICAgIHNldE93bmVyRG9j
dW1lbnQocGFyZW50LT5vd25lckRvY3VtZW50KCkpOworICAgIH0KKwogICAgIERvY3VtZW50KiBv
d25lckRvY3VtZW50KCkgeyByZXR1cm4gbV9vd25lckRvY3VtZW50OyB9CiAgICAgdm9pZCBzZXRP
d25lckRvY3VtZW50KERvY3VtZW50KiBkb2MpIHsgbV9vd25lckRvY3VtZW50ID0gZG9jOyB9CiAK
QEAgLTc1LDYgKzgyLDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9lbWJlZGRlZDsKICAgICBi
b29sIG1fcHJvY2Vzc2VkOwogICAgIGJvb2wgbV9zdHlsZXNoZWV0RG9jVGFrZW47CisgICAgWFNM
U3R5bGVTaGVldCogbV9wYXJlbnRTdHlsZVNoZWV0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQo=
</data>
<flag name="review"
          id="7211"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22661</attachid>
            <date>2008-08-05 15:12:51 -0700</date>
            <delta_ts>2008-08-06 11:58:29 -0700</delta_ts>
            <desc>new and improved patch with 100% less unnecessary UTF-8 conversions</desc>
            <filename>15715.txt</filename>
            <type>text/plain</type>
            <size>3851</size>
            <attacher name="Jonathan Haas">myrdred</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTU2OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDgtMDgtMDUgIEpvbmF0aGFuIEhhYXMgIDxteXJkcmVkQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSAoVEJSKS4KKworICAgICAgICBGaXhlZCBhbiBp
c3N1ZSB3aGljaCBjb3VsZCBjYXVzZSBtZW1vcnkgY29ycnVwdGlvbiB1c2luZyBUb1QgbGlieG1s
LiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzE1CisKKyAg
ICAgICAgKiB4bWwvWFNMSW1wb3J0UnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xJbXBv
cnRSdWxlOjpzZXRYU0xTdHlsZVNoZWV0KToKKyAgICAgICAgKiB4bWwvWFNMU3R5bGVTaGVldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xTdHlsZVNoZWV0OjpYU0xTdHlsZVNoZWV0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlhTTFN0eWxlU2hlZXQ6OnBhcnNlU3RyaW5nKToKKyAgICAgICAgKiB4
bWwvWFNMU3R5bGVTaGVldC5oOgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6cGFy
ZW50U3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpYU0xTdHlsZVNoZWV0OjpzZXRQYXJl
bnRTdHlsZVNoZWV0KToKKwogMjAwOC0wOC0wNSAgS2V2aW4gTWNDdWxsb3VnaCAgPGttY2N1bGxv
dWdoQGFwcGxlLmNvbT4KIAogICAgICAgICAtIEFkZGVkIGEgdGVzdCB0aGF0IGNoZWNrcyBmb3Ig
c2V2ZXJhbCBlZGdlIGNhc2VzIChzZWUgZGVzY3JpcHRpb24gaW4KSW5kZXg6IFdlYkNvcmUveG1s
L1hTTEltcG9ydFJ1bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUveG1sL1hTTEltcG9ydFJ1
bGUuY3BwCShyZXZpc2lvbiAzNTU1OCkKKysrIFdlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgWFNMSW1wb3J0UnVsZTo6c2V0
WFNMU3R5bGVTaGVldChjb24KICAgICAKICAgICBYU0xTdHlsZVNoZWV0KiBwYXJlbnQgPSBwYXJl
bnRTdHlsZVNoZWV0KCk7CiAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgbV9zdHlsZVNoZWV0LT5z
ZXRPd25lckRvY3VtZW50KHBhcmVudC0+b3duZXJEb2N1bWVudCgpKTsKKyAgICAgICAgbV9zdHls
ZVNoZWV0LT5zZXRQYXJlbnRTdHlsZVNoZWV0KHBhcmVudCk7CiAKICAgICBtX3N0eWxlU2hlZXQt
PnBhcnNlU3RyaW5nKHNoZWV0KTsKICAgICBtX2xvYWRpbmcgPSBmYWxzZTsKSW5kZXg6IFdlYkNv
cmUveG1sL1hTTFN0eWxlU2hlZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUveG1sL1hTTFN0
eWxlU2hlZXQuY3BwCShyZXZpc2lvbiAzNTU1OCkKKysrIFdlYkNvcmUveG1sL1hTTFN0eWxlU2hl
ZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw3IEBAIFhTTFN0eWxlU2hlZXQ6OlhT
TFN0eWxlU2hlZXQoWFNMSW1wb3J0UnUKICAgICAsIG1fZW1iZWRkZWQoZmFsc2UpCiAgICAgLCBt
X3Byb2Nlc3NlZChmYWxzZSkgLy8gQ2hpbGQgc2hlZXRzIGdldCBtYXJrZWQgYXMgcHJvY2Vzc2Vk
IHdoZW4gdGhlIGxpYnhzbHQgZW5naW5lIGhhcyBmaW5hbGx5IHNlZW4gdGhlbS4KICAgICAsIG1f
c3R5bGVzaGVldERvY1Rha2VuKGZhbHNlKQorICAgICwgbV9wYXJlbnRTdHlsZVNoZWV0KDApCiB7
CiB9CiAKQEAgLTcwLDYgKzcxLDcgQEAgWFNMU3R5bGVTaGVldDo6WFNMU3R5bGVTaGVldChOb2Rl
KiBwYXJlbgogICAgICwgbV9lbWJlZGRlZChlbWJlZGRlZCkKICAgICAsIG1fcHJvY2Vzc2VkKHRy
dWUpIC8vIFRoZSByb290IHNoZWV0IHN0YXJ0cyBvZmYgcHJvY2Vzc2VkLgogICAgICwgbV9zdHls
ZXNoZWV0RG9jVGFrZW4oZmFsc2UpCisgICAgLCBtX3BhcmVudFN0eWxlU2hlZXQoMCkKIHsKIH0K
IApAQCAtMTQ3LDcgKzE0OSwxNyBAQCBib29sIFhTTFN0eWxlU2hlZXQ6OnBhcnNlU3RyaW5nKGNv
bnN0IFN0CiAgICAgeG1sU2V0U3RydWN0dXJlZEVycm9yRnVuYyhjb25zb2xlLCBYU0xUUHJvY2Vz
c29yOjpwYXJzZUVycm9yRnVuYyk7CiAgICAgeG1sU2V0R2VuZXJpY0Vycm9yRnVuYyhjb25zb2xl
LCBYU0xUUHJvY2Vzc29yOjpnZW5lcmljRXJyb3JGdW5jKTsKIAotICAgIG1fc3R5bGVzaGVldERv
YyA9IHhtbFJlYWRNZW1vcnkocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc3RyaW5nLmNo
YXJhY3RlcnMoKSksIHN0cmluZy5sZW5ndGgoKSAqIHNpemVvZihVQ2hhciksCisgICAgY29uc3Qg
Y2hhciogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc3RyaW5nLmNoYXJh
Y3RlcnMoKSk7CisgICAgaW50IHNpemUgPSBzdHJpbmcubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIp
OworCisgICAgeG1sUGFyc2VyQ3R4dFB0ciBjdHh0ID0geG1sQ3JlYXRlTWVtb3J5UGFyc2VyQ3R4
dChidWZmZXIsIHNpemUpOworCisgICAgaWYgKHBhcmVudFN0eWxlU2hlZXQoKSkgeworICAgICAg
ICB4bWxEaWN0RnJlZShjdHh0LT5kaWN0KTsKKyAgICAgICAgY3R4dC0+ZGljdCA9IHBhcmVudFN0
eWxlU2hlZXQoKS0+bV9zdHlsZXNoZWV0RG9jLT5kaWN0OworICAgIH0KKworICAgIG1fc3R5bGVz
aGVldERvYyA9IHhtbEN0eHRSZWFkTWVtb3J5KGN0eHQsIGJ1ZmZlciwgc2l6ZSwKICAgICAgICAg
aHJlZigpLnV0ZjgoKS5kYXRhKCksCiAgICAgICAgIEJPTUhpZ2hCeXRlID09IDB4RkYgPyAiVVRG
LTE2TEUiIDogIlVURi0xNkJFIiwgCiAgICAgICAgIFhNTF9QQVJTRV9OT0VOVCB8IFhNTF9QQVJT
RV9EVERBVFRSIHwgWE1MX1BBUlNFX05PV0FSTklORyB8IFhNTF9QQVJTRV9OT0NEQVRBKTsKSW5k
ZXg6IFdlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3ht
bC9YU0xTdHlsZVNoZWV0LmgJKHJldmlzaW9uIDM1NTU4KQorKysgV2ViQ29yZS94bWwvWFNMU3R5
bGVTaGVldC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSwxMyBAQCBwdWJsaWM6CiAKICAg
ICBEb2N1bWVudCogb3duZXJEb2N1bWVudCgpIHsgcmV0dXJuIG1fb3duZXJEb2N1bWVudDsgfQog
ICAgIHZvaWQgc2V0T3duZXJEb2N1bWVudChEb2N1bWVudCogZG9jKSB7IG1fb3duZXJEb2N1bWVu
dCA9IGRvYzsgfQotCisgICAgWFNMU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVldCgpIHsgcmV0
dXJuIG1fcGFyZW50U3R5bGVTaGVldDsgfQorICAgIHZvaWQgc2V0UGFyZW50U3R5bGVTaGVldChY
U0xTdHlsZVNoZWV0KiBwYXJlbnQpIHsKKyAgICAgICBtX3BhcmVudFN0eWxlU2hlZXQgPSBwYXJl
bnQ7IAorICAgICAgIGlmIChwYXJlbnQpCisgICAgICAgICAgc2V0T3duZXJEb2N1bWVudChwYXJl
bnQtPm93bmVyRG9jdW1lbnQoKSk7CisgICAgfQorIAogICAgIHhtbERvY1B0ciBkb2N1bWVudCgp
OwogCiAgICAgdm9pZCBjbGVhckRvY3VtZW50cygpOwpAQCAtOTAsNiArOTYsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9lbWJlZGRlZDsKICAgICBib29sIG1fcHJvY2Vzc2VkOwogICAgIGJvb2wg
bV9zdHlsZXNoZWV0RG9jVGFrZW47CisJWFNMU3R5bGVTaGVldCogbV9wYXJlbnRTdHlsZVNoZWV0
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="review"
          id="10031"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22685</attachid>
            <date>2008-08-06 11:58:29 -0700</date>
            <delta_ts>2008-08-22 13:03:05 -0700</delta_ts>
            <desc>fixed</desc>
            <filename>15715.txt</filename>
            <type>text/plain</type>
            <size>4249</size>
            <attacher name="Jonathan Haas">myrdred</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTU2OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDgtMDgtMDUgIEpvbmF0aGFuIEhhYXMgIDxteXJkcmVkQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSAoVEJSKS4KKworICAgICAgICBGaXhlZCBhbiBp
c3N1ZSB3aGljaCBjb3VsZCBjYXVzZSBtZW1vcnkgY29ycnVwdGlvbiB1c2luZyBUb1QgbGlieG1s
LiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzE1CisKKyAg
ICAgICAgKiB4bWwvWFNMSW1wb3J0UnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xJbXBv
cnRSdWxlOjpzZXRYU0xTdHlsZVNoZWV0KToKKyAgICAgICAgKiB4bWwvWFNMU3R5bGVTaGVldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xTdHlsZVNoZWV0OjpYU0xTdHlsZVNoZWV0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlhTTFN0eWxlU2hlZXQ6OnBhcnNlU3RyaW5nKToKKyAgICAgICAgKiB4
bWwvWFNMU3R5bGVTaGVldC5oOgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6cGFy
ZW50U3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpYU0xTdHlsZVNoZWV0OjpzZXRQYXJl
bnRTdHlsZVNoZWV0KToKKwogMjAwOC0wOC0wNSAgS2V2aW4gTWNDdWxsb3VnaCAgPGttY2N1bGxv
dWdoQGFwcGxlLmNvbT4KIAogICAgICAgICAtIEFkZGVkIGEgdGVzdCB0aGF0IGNoZWNrcyBmb3Ig
c2V2ZXJhbCBlZGdlIGNhc2VzIChzZWUgZGVzY3JpcHRpb24gaW4KSW5kZXg6IFdlYkNvcmUveG1s
L1hTTEltcG9ydFJ1bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUveG1sL1hTTEltcG9ydFJ1
bGUuY3BwCShyZXZpc2lvbiAzNTU1OCkKKysrIFdlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgWFNMSW1wb3J0UnVsZTo6c2V0
WFNMU3R5bGVTaGVldChjb24KICAgICAKICAgICBYU0xTdHlsZVNoZWV0KiBwYXJlbnQgPSBwYXJl
bnRTdHlsZVNoZWV0KCk7CiAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgbV9zdHlsZVNoZWV0LT5z
ZXRPd25lckRvY3VtZW50KHBhcmVudC0+b3duZXJEb2N1bWVudCgpKTsKKyAgICAgICAgbV9zdHls
ZVNoZWV0LT5zZXRQYXJlbnRTdHlsZVNoZWV0KHBhcmVudCk7CiAKICAgICBtX3N0eWxlU2hlZXQt
PnBhcnNlU3RyaW5nKHNoZWV0KTsKICAgICBtX2xvYWRpbmcgPSBmYWxzZTsKSW5kZXg6IFdlYkNv
cmUveG1sL1hTTFN0eWxlU2hlZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUveG1sL1hTTFN0
eWxlU2hlZXQuY3BwCShyZXZpc2lvbiAzNTU1OCkKKysrIFdlYkNvcmUveG1sL1hTTFN0eWxlU2hl
ZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw3IEBAIFhTTFN0eWxlU2hlZXQ6OlhT
TFN0eWxlU2hlZXQoWFNMSW1wb3J0UnUKICAgICAsIG1fZW1iZWRkZWQoZmFsc2UpCiAgICAgLCBt
X3Byb2Nlc3NlZChmYWxzZSkgLy8gQ2hpbGQgc2hlZXRzIGdldCBtYXJrZWQgYXMgcHJvY2Vzc2Vk
IHdoZW4gdGhlIGxpYnhzbHQgZW5naW5lIGhhcyBmaW5hbGx5IHNlZW4gdGhlbS4KICAgICAsIG1f
c3R5bGVzaGVldERvY1Rha2VuKGZhbHNlKQorICAgICwgbV9wYXJlbnRTdHlsZVNoZWV0KDApCiB7
CiB9CiAKQEAgLTcwLDYgKzcxLDcgQEAgWFNMU3R5bGVTaGVldDo6WFNMU3R5bGVTaGVldChOb2Rl
KiBwYXJlbgogICAgICwgbV9lbWJlZGRlZChlbWJlZGRlZCkKICAgICAsIG1fcHJvY2Vzc2VkKHRy
dWUpIC8vIFRoZSByb290IHNoZWV0IHN0YXJ0cyBvZmYgcHJvY2Vzc2VkLgogICAgICwgbV9zdHls
ZXNoZWV0RG9jVGFrZW4oZmFsc2UpCisgICAgLCBtX3BhcmVudFN0eWxlU2hlZXQoMCkKIHsKIH0K
IApAQCAtMTQ3LDcgKzE0OSwyMyBAQCBib29sIFhTTFN0eWxlU2hlZXQ6OnBhcnNlU3RyaW5nKGNv
bnN0IFN0CiAgICAgeG1sU2V0U3RydWN0dXJlZEVycm9yRnVuYyhjb25zb2xlLCBYU0xUUHJvY2Vz
c29yOjpwYXJzZUVycm9yRnVuYyk7CiAgICAgeG1sU2V0R2VuZXJpY0Vycm9yRnVuYyhjb25zb2xl
LCBYU0xUUHJvY2Vzc29yOjpnZW5lcmljRXJyb3JGdW5jKTsKIAotICAgIG1fc3R5bGVzaGVldERv
YyA9IHhtbFJlYWRNZW1vcnkocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc3RyaW5nLmNo
YXJhY3RlcnMoKSksIHN0cmluZy5sZW5ndGgoKSAqIHNpemVvZihVQ2hhciksCisgICAgY29uc3Qg
Y2hhciogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc3RyaW5nLmNoYXJh
Y3RlcnMoKSk7CisgICAgaW50IHNpemUgPSBzdHJpbmcubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIp
OworCisgICAgeG1sUGFyc2VyQ3R4dFB0ciBjdHh0ID0geG1sQ3JlYXRlTWVtb3J5UGFyc2VyQ3R4
dChidWZmZXIsIHNpemUpOworCisgICAgaWYgKHBhcmVudFN0eWxlU2hlZXQoKSkgeworICAgICAg
ICAvLyBUaGUgWFNMIHRyYW5zZm9ybSBtYXkgbGVhdmUgdGhlIG5ld2x5LXRyYW5zZm9ybWVkIGRv
Y3VtZW50CisgICAgICAgIC8vIHdpdGggcmVmZXJlbmNlcyB0byB0aGUgc3ltYm9sIGRpY3Rpb25h
cmllcyBvZiB0aGUgc3R5bGUgc2hlZXQKKyAgICAgICAgLy8gYW5kIGFueSBvZiBpdHMgY2hpbGRy
ZW4uIFhNTCBkb2N1bWVudCBkaXNwb3NhbCBjYW4gY29ycnVwdCBtZW1vcnkKKyAgICAgICAgLy8g
aWYgYSBkb2N1bWVudCB1c2VzIG1vcmUgdGhhbiBvbmUgc3ltYm9sIGRpY3Rpb25hcnksIHNvIHdl
CisgICAgICAgIC8vIGVuc3VyZSB0aGF0IGFsbCBjaGlsZCBzdHlsZXNoZWV0cyB1c2UgdGhlIHNh
bWUgZGljdGlvbmFyaWVzIGFzIHRoZWlyCisgICAgICAgIC8vIHBhcmVudHMuCisgICAgICAgIHht
bERpY3RGcmVlKGN0eHQtPmRpY3QpOworICAgICAgICBjdHh0LT5kaWN0ID0gcGFyZW50U3R5bGVT
aGVldCgpLT5tX3N0eWxlc2hlZXREb2MtPmRpY3Q7CisgICAgfQorCisgICAgbV9zdHlsZXNoZWV0
RG9jID0geG1sQ3R4dFJlYWRNZW1vcnkoY3R4dCwgYnVmZmVyLCBzaXplLAogICAgICAgICBocmVm
KCkudXRmOCgpLmRhdGEoKSwKICAgICAgICAgQk9NSGlnaEJ5dGUgPT0gMHhGRiA/ICJVVEYtMTZM
RSIgOiAiVVRGLTE2QkUiLCAKICAgICAgICAgWE1MX1BBUlNFX05PRU5UIHwgWE1MX1BBUlNFX0RU
REFUVFIgfCBYTUxfUEFSU0VfTk9XQVJOSU5HIHwgWE1MX1BBUlNFX05PQ0RBVEEpOwpJbmRleDog
V2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUveG1sL1hT
TFN0eWxlU2hlZXQuaAkocmV2aXNpb24gMzU1NTgpCisrKyBXZWJDb3JlL3htbC9YU0xTdHlsZVNo
ZWV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDEzIEBAIHB1YmxpYzoKIAogICAgIERv
Y3VtZW50KiBvd25lckRvY3VtZW50KCkgeyByZXR1cm4gbV9vd25lckRvY3VtZW50OyB9CiAgICAg
dm9pZCBzZXRPd25lckRvY3VtZW50KERvY3VtZW50KiBkb2MpIHsgbV9vd25lckRvY3VtZW50ID0g
ZG9jOyB9Ci0KKyAgICBYU0xTdHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0KCkgeyByZXR1cm4g
bV9wYXJlbnRTdHlsZVNoZWV0OyB9CisgICAgdm9pZCBzZXRQYXJlbnRTdHlsZVNoZWV0KFhTTFN0
eWxlU2hlZXQqIHBhcmVudCkgeworICAgICAgIG1fcGFyZW50U3R5bGVTaGVldCA9IHBhcmVudDsg
CisgICAgICAgaWYgKHBhcmVudCkKKyAgICAgICAgICBzZXRPd25lckRvY3VtZW50KHBhcmVudC0+
b3duZXJEb2N1bWVudCgpKTsKKyAgICB9CisgCiAgICAgeG1sRG9jUHRyIGRvY3VtZW50KCk7CiAK
ICAgICB2b2lkIGNsZWFyRG9jdW1lbnRzKCk7CkBAIC05MCw2ICs5Niw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2VtYmVkZGVkOwogICAgIGJvb2wgbV9wcm9jZXNzZWQ7CiAgICAgYm9vbCBtX3N0
eWxlc2hlZXREb2NUYWtlbjsKKyAgICBYU0xTdHlsZVNoZWV0KiBtX3BhcmVudFN0eWxlU2hlZXQ7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="10052"
          type_id="1"
          status="-"
          setter="myrdred"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22944</attachid>
            <date>2008-08-22 13:03:05 -0700</date>
            <delta_ts>2008-10-31 17:31:57 -0700</delta_ts>
            <desc>latest patch</desc>
            <filename>15715.txt</filename>
            <type>text/plain</type>
            <size>4288</size>
            <attacher name="Jonathan Haas">myrdred</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTU2OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDgtMDgtMDUgIEpvbmF0aGFuIEhhYXMgIDxteXJkcmVkQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSAoVEJSKS4KKworICAgICAgICBGaXhlZCBhbiBp
c3N1ZSB3aGljaCBjb3VsZCBjYXVzZSBtZW1vcnkgY29ycnVwdGlvbiB1c2luZyBUb1QgbGlieG1s
LiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzE1CisKKyAg
ICAgICAgKiB4bWwvWFNMSW1wb3J0UnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xJbXBv
cnRSdWxlOjpzZXRYU0xTdHlsZVNoZWV0KToKKyAgICAgICAgKiB4bWwvWFNMU3R5bGVTaGVldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xTdHlsZVNoZWV0OjpYU0xTdHlsZVNoZWV0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlhTTFN0eWxlU2hlZXQ6OnBhcnNlU3RyaW5nKToKKyAgICAgICAgKiB4
bWwvWFNMU3R5bGVTaGVldC5oOgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6cGFy
ZW50U3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpYU0xTdHlsZVNoZWV0OjpzZXRQYXJl
bnRTdHlsZVNoZWV0KToKKwogMjAwOC0wOC0wNSAgS2V2aW4gTWNDdWxsb3VnaCAgPGttY2N1bGxv
dWdoQGFwcGxlLmNvbT4KIAogICAgICAgICAtIEFkZGVkIGEgdGVzdCB0aGF0IGNoZWNrcyBmb3Ig
c2V2ZXJhbCBlZGdlIGNhc2VzIChzZWUgZGVzY3JpcHRpb24gaW4KSW5kZXg6IFdlYkNvcmUveG1s
L1hTTEltcG9ydFJ1bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUveG1sL1hTTEltcG9ydFJ1
bGUuY3BwCShyZXZpc2lvbiAzNTU1OCkKKysrIFdlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgWFNMSW1wb3J0UnVsZTo6c2V0
WFNMU3R5bGVTaGVldChjb24KICAgICAKICAgICBYU0xTdHlsZVNoZWV0KiBwYXJlbnQgPSBwYXJl
bnRTdHlsZVNoZWV0KCk7CiAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgbV9zdHlsZVNoZWV0LT5z
ZXRPd25lckRvY3VtZW50KHBhcmVudC0+b3duZXJEb2N1bWVudCgpKTsKKyAgICAgICAgbV9zdHls
ZVNoZWV0LT5zZXRQYXJlbnRTdHlsZVNoZWV0KHBhcmVudCk7CiAKICAgICBtX3N0eWxlU2hlZXQt
PnBhcnNlU3RyaW5nKHNoZWV0KTsKICAgICBtX2xvYWRpbmcgPSBmYWxzZTsKSW5kZXg6IFdlYkNv
cmUveG1sL1hTTFN0eWxlU2hlZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUveG1sL1hTTFN0
eWxlU2hlZXQuY3BwCShyZXZpc2lvbiAzNTU1OCkKKysrIFdlYkNvcmUveG1sL1hTTFN0eWxlU2hl
ZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw3IEBAIFhTTFN0eWxlU2hlZXQ6OlhT
TFN0eWxlU2hlZXQoWFNMSW1wb3J0UnUKICAgICAsIG1fZW1iZWRkZWQoZmFsc2UpCiAgICAgLCBt
X3Byb2Nlc3NlZChmYWxzZSkgLy8gQ2hpbGQgc2hlZXRzIGdldCBtYXJrZWQgYXMgcHJvY2Vzc2Vk
IHdoZW4gdGhlIGxpYnhzbHQgZW5naW5lIGhhcyBmaW5hbGx5IHNlZW4gdGhlbS4KICAgICAsIG1f
c3R5bGVzaGVldERvY1Rha2VuKGZhbHNlKQorICAgICwgbV9wYXJlbnRTdHlsZVNoZWV0KDApCiB7
CiB9CiAKQEAgLTcwLDYgKzcxLDcgQEAgWFNMU3R5bGVTaGVldDo6WFNMU3R5bGVTaGVldChOb2Rl
KiBwYXJlbgogICAgICwgbV9lbWJlZGRlZChlbWJlZGRlZCkKICAgICAsIG1fcHJvY2Vzc2VkKHRy
dWUpIC8vIFRoZSByb290IHNoZWV0IHN0YXJ0cyBvZmYgcHJvY2Vzc2VkLgogICAgICwgbV9zdHls
ZXNoZWV0RG9jVGFrZW4oZmFsc2UpCisgICAgLCBtX3BhcmVudFN0eWxlU2hlZXQoMCkKIHsKIH0K
IApAQCAtMTQ3LDcgKzE0OSwyNCBAQCBib29sIFhTTFN0eWxlU2hlZXQ6OnBhcnNlU3RyaW5nKGNv
bnN0IFN0CiAgICAgeG1sU2V0U3RydWN0dXJlZEVycm9yRnVuYyhjb25zb2xlLCBYU0xUUHJvY2Vz
c29yOjpwYXJzZUVycm9yRnVuYyk7CiAgICAgeG1sU2V0R2VuZXJpY0Vycm9yRnVuYyhjb25zb2xl
LCBYU0xUUHJvY2Vzc29yOjpnZW5lcmljRXJyb3JGdW5jKTsKIAotICAgIG1fc3R5bGVzaGVldERv
YyA9IHhtbFJlYWRNZW1vcnkocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc3RyaW5nLmNo
YXJhY3RlcnMoKSksIHN0cmluZy5sZW5ndGgoKSAqIHNpemVvZihVQ2hhciksCisgICAgY29uc3Qg
Y2hhciogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc3RyaW5nLmNoYXJh
Y3RlcnMoKSk7CisgICAgaW50IHNpemUgPSBzdHJpbmcubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIp
OworCisgICAgeG1sUGFyc2VyQ3R4dFB0ciBjdHh0ID0geG1sQ3JlYXRlTWVtb3J5UGFyc2VyQ3R4
dChidWZmZXIsIHNpemUpOworCisgICAgaWYgKHBhcmVudFN0eWxlU2hlZXQoKSkgeworICAgICAg
ICAvLyBUaGUgWFNMIHRyYW5zZm9ybSBtYXkgbGVhdmUgdGhlIG5ld2x5LXRyYW5zZm9ybWVkIGRv
Y3VtZW50CisgICAgICAgIC8vIHdpdGggcmVmZXJlbmNlcyB0byB0aGUgc3ltYm9sIGRpY3Rpb25h
cmllcyBvZiB0aGUgc3R5bGUgc2hlZXQKKyAgICAgICAgLy8gYW5kIGFueSBvZiBpdHMgY2hpbGRy
ZW4uIFhNTCBkb2N1bWVudCBkaXNwb3NhbCBjYW4gY29ycnVwdCBtZW1vcnkKKyAgICAgICAgLy8g
aWYgYSBkb2N1bWVudCB1c2VzIG1vcmUgdGhhbiBvbmUgc3ltYm9sIGRpY3Rpb25hcnksIHNvIHdl
CisgICAgICAgIC8vIGVuc3VyZSB0aGF0IGFsbCBjaGlsZCBzdHlsZXNoZWV0cyB1c2UgdGhlIHNh
bWUgZGljdGlvbmFyaWVzIGFzIHRoZWlyCisgICAgICAgIC8vIHBhcmVudHMuCisgICAgICAgIHht
bERpY3RGcmVlKGN0eHQtPmRpY3QpOworICAgICAgICBjdHh0LT5kaWN0ID0gcGFyZW50U3R5bGVT
aGVldCgpLT5tX3N0eWxlc2hlZXREb2MtPmRpY3Q7CisgICAgICAgIHhtbERpY3RSZWZlcmVuY2Uo
Y3R4dC0+ZGljdCk7CisgICAgfQorCisgICAgbV9zdHlsZXNoZWV0RG9jID0geG1sQ3R4dFJlYWRN
ZW1vcnkoY3R4dCwgYnVmZmVyLCBzaXplLAogICAgICAgICBocmVmKCkudXRmOCgpLmRhdGEoKSwK
ICAgICAgICAgQk9NSGlnaEJ5dGUgPT0gMHhGRiA/ICJVVEYtMTZMRSIgOiAiVVRGLTE2QkUiLCAK
ICAgICAgICAgWE1MX1BBUlNFX05PRU5UIHwgWE1MX1BBUlNFX0RUREFUVFIgfCBYTUxfUEFSU0Vf
Tk9XQVJOSU5HIHwgWE1MX1BBUlNFX05PQ0RBVEEpOwpJbmRleDogV2ViQ29yZS94bWwvWFNMU3R5
bGVTaGVldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXQuaAkocmV2
aXNpb24gMzU1NTgpCisrKyBXZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTcxLDcgKzcxLDEzIEBAIHB1YmxpYzoKIAogICAgIERvY3VtZW50KiBvd25lckRvY3Vt
ZW50KCkgeyByZXR1cm4gbV9vd25lckRvY3VtZW50OyB9CiAgICAgdm9pZCBzZXRPd25lckRvY3Vt
ZW50KERvY3VtZW50KiBkb2MpIHsgbV9vd25lckRvY3VtZW50ID0gZG9jOyB9Ci0KKyAgICBYU0xT
dHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0KCkgeyByZXR1cm4gbV9wYXJlbnRTdHlsZVNoZWV0
OyB9CisgICAgdm9pZCBzZXRQYXJlbnRTdHlsZVNoZWV0KFhTTFN0eWxlU2hlZXQqIHBhcmVudCkg
eworICAgICAgIG1fcGFyZW50U3R5bGVTaGVldCA9IHBhcmVudDsgCisgICAgICAgaWYgKHBhcmVu
dCkKKyAgICAgICAgICBzZXRPd25lckRvY3VtZW50KHBhcmVudC0+b3duZXJEb2N1bWVudCgpKTsK
KyAgICB9CisgCiAgICAgeG1sRG9jUHRyIGRvY3VtZW50KCk7CiAKICAgICB2b2lkIGNsZWFyRG9j
dW1lbnRzKCk7CkBAIC05MCw2ICs5Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2VtYmVkZGVk
OwogICAgIGJvb2wgbV9wcm9jZXNzZWQ7CiAgICAgYm9vbCBtX3N0eWxlc2hlZXREb2NUYWtlbjsK
KyAgICBYU0xTdHlsZVNoZWV0KiBtX3BhcmVudFN0eWxlU2hlZXQ7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="10210"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24827</attachid>
            <date>2008-10-31 17:31:57 -0700</date>
            <delta_ts>2010-06-10 16:45:13 -0700</delta_ts>
            <desc>Patch addressing Darin&apos;s comments</desc>
            <filename>15715c.txt</filename>
            <type>text/plain</type>
            <size>7954</size>
            <attacher name="Pam Greene (IRC:pamg)">pam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODA1OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMDgtMTAtMzEgIEpvbmF0aGFuIEhhYXMgIDxteXJkcmVkQGdtYWls
LmNvbT4KKworICAgICAgICBBZGRpaXRvbmFsIHR3ZWFrcyBhbmQgcGF0Y2ggcHJlcCBieSBQYW1l
bGEgR3JlZW5lIDxwYW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEZpeGVkIGFuIGlzc3VlIHdoaWNoIGNvdWxkIGNhdXNlIG1l
bW9yeSBjb3JydXB0aW9uIHVzaW5nIFRvVCBsaWJ4bWwuCisgICAgICAgIFNlZSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MTUKKworICAgICAgICBUZXN0OiBmYXN0
L3hzbC94c2x0LW5lc3RlZC1zdHlsZXNoZWV0cy54bWwKKworICAgICAgICAqIHhtbC9YU0xJbXBv
cnRSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTEltcG9ydFJ1bGU6OnNldFhTTFN0eWxl
U2hlZXQpOiBTZXQgcGFyZW50IHJhdGhlciB0aGFuIG93bmVyIGRvY3VtZW50CisgICAgICAgICog
eG1sL1hTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6
WFNMU3R5bGVTaGVldCk6IEluaXRpYWxpemUgbV9wYXJlbnRTdHlsZVNoZWV0CisgICAgICAgIChX
ZWJDb3JlOjpYU0xTdHlsZVNoZWV0OjpwYXJzZVN0cmluZyk6IE1ha2UgYWxsIGNoaWxkIHN0eWxl
c2hlZXRzIHVzZSBwYXJlbnQncyBkaWN0aW9uYXJ5CisgICAgICAgIChXZWJDb3JlOjpYU0xTdHls
ZVNoZWV0OjpzZXRQYXJlbnRTdHlsZVNoZWV0KTogQWRkZWQKKyAgICAgICAgKiB4bWwvWFNMU3R5
bGVTaGVldC5oOiBBZGRlZCBtX3BhcmVudFN0eWxlU2hlZXQgbWVtYmVyCisKIDIwMDgtMTAtMzEg
IERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBK
b2huIFN1bGxpdmFuLgpJbmRleDogV2ViQ29yZS94bWwvWFNMSW1wb3J0UnVsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS94bWwvWFNMSW1wb3J0UnVsZS5jcHAJKHJldmlzaW9uIDM4MDU1KQor
KysgV2ViQ29yZS94bWwvWFNMSW1wb3J0UnVsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcg
KzYxLDcgQEAgdm9pZCBYU0xJbXBvcnRSdWxlOjpzZXRYU0xTdHlsZVNoZWV0KGNvbgogICAgIAog
ICAgIFhTTFN0eWxlU2hlZXQqIHBhcmVudCA9IHBhcmVudFN0eWxlU2hlZXQoKTsKICAgICBpZiAo
cGFyZW50KQotICAgICAgICBtX3N0eWxlU2hlZXQtPnNldE93bmVyRG9jdW1lbnQocGFyZW50LT5v
d25lckRvY3VtZW50KCkpOworICAgICAgICBtX3N0eWxlU2hlZXQtPnNldFBhcmVudFN0eWxlU2hl
ZXQocGFyZW50KTsKIAogICAgIG1fc3R5bGVTaGVldC0+cGFyc2VTdHJpbmcoc2hlZXQpOwogICAg
IG1fbG9hZGluZyA9IGZhbHNlOwpJbmRleDogV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldC5jcHAJKHJldmlzaW9uIDM4
MDU1KQorKysgV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYwLDYgKzYwLDcgQEAgWFNMU3R5bGVTaGVldDo6WFNMU3R5bGVTaGVldChYU0xJbXBvcnRSdQog
ICAgICwgbV9lbWJlZGRlZChmYWxzZSkKICAgICAsIG1fcHJvY2Vzc2VkKGZhbHNlKSAvLyBDaGls
ZCBzaGVldHMgZ2V0IG1hcmtlZCBhcyBwcm9jZXNzZWQgd2hlbiB0aGUgbGlieHNsdCBlbmdpbmUg
aGFzIGZpbmFsbHkgc2VlbiB0aGVtLgogICAgICwgbV9zdHlsZXNoZWV0RG9jVGFrZW4oZmFsc2Up
CisgICAgLCBtX3BhcmVudFN0eWxlU2hlZXQoMCkKIHsKIH0KIApAQCAtNzAsNiArNzEsNyBAQCBY
U0xTdHlsZVNoZWV0OjpYU0xTdHlsZVNoZWV0KE5vZGUqIHBhcmVuCiAgICAgLCBtX2VtYmVkZGVk
KGVtYmVkZGVkKQogICAgICwgbV9wcm9jZXNzZWQodHJ1ZSkgLy8gVGhlIHJvb3Qgc2hlZXQgc3Rh
cnRzIG9mZiBwcm9jZXNzZWQuCiAgICAgLCBtX3N0eWxlc2hlZXREb2NUYWtlbihmYWxzZSkKKyAg
ICAsIG1fcGFyZW50U3R5bGVTaGVldCgwKQogewogfQogCkBAIC0xNDcsNyArMTQ5LDI0IEBAIGJv
b2wgWFNMU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcoY29uc3QgU3QKICAgICB4bWxTZXRTdHJ1Y3R1
cmVkRXJyb3JGdW5jKGNvbnNvbGUsIFhTTFRQcm9jZXNzb3I6OnBhcnNlRXJyb3JGdW5jKTsKICAg
ICB4bWxTZXRHZW5lcmljRXJyb3JGdW5jKGNvbnNvbGUsIFhTTFRQcm9jZXNzb3I6OmdlbmVyaWNF
cnJvckZ1bmMpOwogCi0gICAgbV9zdHlsZXNoZWV0RG9jID0geG1sUmVhZE1lbW9yeShyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihzdHJpbmcuY2hhcmFjdGVycygpKSwgc3RyaW5nLmxlbmd0
aCgpICogc2l6ZW9mKFVDaGFyKSwKKyAgICBjb25zdCBjaGFyKiBidWZmZXIgPSByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihzdHJpbmcuY2hhcmFjdGVycygpKTsKKyAgICBpbnQgc2l6ZSA9
IHN0cmluZy5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcik7CisKKyAgICB4bWxQYXJzZXJDdHh0UHRy
IGN0eHQgPSB4bWxDcmVhdGVNZW1vcnlQYXJzZXJDdHh0KGJ1ZmZlciwgc2l6ZSk7CisKKyAgICBp
ZiAobV9wYXJlbnRTdHlsZVNoZWV0KSB7CisgICAgICAgIC8vIFRoZSBYU0wgdHJhbnNmb3JtIG1h
eSBsZWF2ZSB0aGUgbmV3bHktdHJhbnNmb3JtZWQgZG9jdW1lbnQKKyAgICAgICAgLy8gd2l0aCBy
ZWZlcmVuY2VzIHRvIHRoZSBzeW1ib2wgZGljdGlvbmFyaWVzIG9mIHRoZSBzdHlsZSBzaGVldAor
ICAgICAgICAvLyBhbmQgYW55IG9mIGl0cyBjaGlsZHJlbi4gWE1MIGRvY3VtZW50IGRpc3Bvc2Fs
IGNhbiBjb3JydXB0IG1lbW9yeQorICAgICAgICAvLyBpZiBhIGRvY3VtZW50IHVzZXMgbW9yZSB0
aGFuIG9uZSBzeW1ib2wgZGljdGlvbmFyeSwgc28gd2UKKyAgICAgICAgLy8gZW5zdXJlIHRoYXQg
YWxsIGNoaWxkIHN0eWxlc2hlZXRzIHVzZSB0aGUgc2FtZSBkaWN0aW9uYXJpZXMgYXMgdGhlaXIK
KyAgICAgICAgLy8gcGFyZW50cy4KKyAgICAgICAgeG1sRGljdEZyZWUoY3R4dC0+ZGljdCk7Cisg
ICAgICAgIGN0eHQtPmRpY3QgPSBtX3BhcmVudFN0eWxlU2hlZXQtPm1fc3R5bGVzaGVldERvYy0+
ZGljdDsKKyAgICAgICAgeG1sRGljdFJlZmVyZW5jZShjdHh0LT5kaWN0KTsKKyAgICB9CisKKyAg
ICBtX3N0eWxlc2hlZXREb2MgPSB4bWxDdHh0UmVhZE1lbW9yeShjdHh0LCBidWZmZXIsIHNpemUs
CiAgICAgICAgIGhyZWYoKS51dGY4KCkuZGF0YSgpLAogICAgICAgICBCT01IaWdoQnl0ZSA9PSAw
eEZGID8gIlVURi0xNkxFIiA6ICJVVEYtMTZCRSIsIAogICAgICAgICBYTUxfUEFSU0VfTk9FTlQg
fCBYTUxfUEFSU0VfRFREQVRUUiB8IFhNTF9QQVJTRV9OT1dBUk5JTkcgfCBYTUxfUEFSU0VfTk9D
REFUQSk7CkBAIC0yMzUsNiArMjU0LDEzIEBAIHhzbHRTdHlsZXNoZWV0UHRyIFhTTFN0eWxlU2hl
ZXQ6OmNvbXBpbGUKICAgICByZXR1cm4gcmVzdWx0OwogfQogCit2b2lkIFhTTFN0eWxlU2hlZXQ6
OnNldFBhcmVudFN0eWxlU2hlZXQoWFNMU3R5bGVTaGVldCogcGFyZW50KQoreworICAgIG1fcGFy
ZW50U3R5bGVTaGVldCA9IHBhcmVudDsKKyAgICBpZiAocGFyZW50KQorICAgICAgICBtX293bmVy
RG9jdW1lbnQgPSBwYXJlbnQtPm93bmVyRG9jdW1lbnQoKTsKK30KKwogeG1sRG9jUHRyIFhTTFN0
eWxlU2hlZXQ6OmxvY2F0ZVN0eWxlc2hlZXRTdWJSZXNvdXJjZSh4bWxEb2NQdHIgcGFyZW50RG9j
LCBjb25zdCB4bWxDaGFyKiB1cmkpCiB7CiAgICAgYm9vbCBtYXRjaGVkUGFyZW50ID0gKHBhcmVu
dERvYyA9PSBkb2N1bWVudCgpKTsKSW5kZXg6IFdlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0LmgJKHJldmlzaW9uIDM4MDU1
KQorKysgV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3
ICs3MCw3IEBAIHB1YmxpYzoKICAgICBEb2NMb2FkZXIqIGRvY0xvYWRlcigpOwogCiAgICAgRG9j
dW1lbnQqIG93bmVyRG9jdW1lbnQoKSB7IHJldHVybiBtX293bmVyRG9jdW1lbnQ7IH0KLSAgICB2
b2lkIHNldE93bmVyRG9jdW1lbnQoRG9jdW1lbnQqIGRvYykgeyBtX293bmVyRG9jdW1lbnQgPSBk
b2M7IH0KKyAgICB2b2lkIHNldFBhcmVudFN0eWxlU2hlZXQoWFNMU3R5bGVTaGVldCogcGFyZW50
KTsKIAogICAgIHhtbERvY1B0ciBkb2N1bWVudCgpOwogCkBAIC05MCw2ICs5MCw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2VtYmVkZGVkOwogICAgIGJvb2wgbV9wcm9jZXNzZWQ7CiAgICAgYm9v
bCBtX3N0eWxlc2hlZXREb2NUYWtlbjsKKyAgICBYU0xTdHlsZVNoZWV0KiBtX3BhcmVudFN0eWxl
U2hlZXQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAz
ODA1OCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE1IEBACisyMDA4LTEwLTMxICBQYW1lbGEgR3JlZW5lICA8cGFtQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0ZXN0
IGZvciBjcmFzaCByZXN1bHRpbmcgZnJvbSBuZXN0ZWQgc3R5bGVzaGVldHMgdXNpbmcgY2VydGFp
bgorICAgICAgICBidWlsZHMgb2YgbGlieG1sMi4gIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MTUgLgorCisgICAgICAgICogZmFzdC94c2wvcmVzb3VyY2Vz
L3hzbHQtbmVzdGVkLXN0eWxlc2hlZXRzMC54c2w6IEFkZGVkLgorICAgICAgICAqIGZhc3QveHNs
L3Jlc291cmNlcy94c2x0LW5lc3RlZC1zdHlsZXNoZWV0czEueHNsOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3hzbC94c2x0LW5lc3RlZC1zdHlsZXNoZWV0cy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QveHNsL3hzbHQtbmVzdGVkLXN0eWxlc2hlZXRzLnhtbDogQWRkZWQuCisK
IDIwMDgtMTAtMzAgIEp1c3RpbiBHYXJjaWEgIDxqdXN0aW4uZ2FyY2lhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGRlZCBhbm90aGVyIGxheW91dCB0ZXN0IGZvciBwcmV2aW91cyBjaGVjay1pbi4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QveHNsL3hzbHQtbmVzdGVkLXN0eWxlc2hlZXRzLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3hzbC94c2x0LW5lc3RlZC1z
dHlsZXNoZWV0cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L3hzbC94c2x0LW5lc3RlZC1zdHlsZXNoZWV0cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMyBAQAorVGVzdHMgYSBjcmFzaCByZXN1bHRpbmcgZnJvbSBhIHN0cmluZyBsaXRl
cmFsIGluIGEgbmVzdGVkIFhTTCBzdHlsZXNoZWV0LiBJZiB5b3UgcmVhY2hlZCBoZXJlIHdpdGhv
dXQgY3Jhc2hpbmcsIHRoZSB0ZXN0IHBhc3NlZC4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTcxNSAuCisKK1NVQ0NFU1MKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QveHNsL3hzbHQtbmVzdGVkLXN0eWxlc2hlZXRzLnhtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L3hzbC94c2x0LW5lc3RlZC1zdHlsZXNoZWV0cy54bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L3hzbC94c2x0LW5lc3RlZC1zdHlsZXNoZWV0cy54bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRm
LTgiPz4KKzw/eG1sLXN0eWxlc2hlZXQgdHlwZT0idGV4dC94c2wiIGhyZWY9InJlc291cmNlcy94
c2x0LW5lc3RlZC1zdHlsZXNoZWV0czAueHNsIj8+CisKKzxzdHlsZXNoZWV0LXRlc3Q+CisgIFRo
aXMgdGVzdHMgYSBjcmFzaCByZXN1bHRpbmcgZnJvbSBpbmNsdWRpbmcgbmVzdGVkIHN0eWxlc2hl
ZXRzLgorPC9zdHlsZXNoZWV0LXRlc3Q+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3hzbC9yZXNv
dXJjZXMveHNsdC1uZXN0ZWQtc3R5bGVzaGVldHMwLnhzbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L3hzbC9yZXNvdXJjZXMveHNsdC1uZXN0ZWQtc3R5bGVzaGVldHMwLnhzbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QveHNsL3Jlc291cmNlcy94c2x0LW5lc3RlZC1z
dHlsZXNoZWV0czAueHNsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKKzw/eG1sIHZlcnNp
b249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CisKKzx4c2w6c3R5bGVzaGVldCB2ZXJzaW9uPSIx
LjAiIHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIj4KKyAg
ICA8eHNsOmltcG9ydCBocmVmPSJ4c2x0LW5lc3RlZC1zdHlsZXNoZWV0czEueHNsIi8+Cis8L3hz
bDpzdHlsZXNoZWV0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC94c2wvcmVzb3VyY2VzL3hzbHQt
bmVzdGVkLXN0eWxlc2hlZXRzMS54c2wKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC94
c2wvcmVzb3VyY2VzL3hzbHQtbmVzdGVkLXN0eWxlc2hlZXRzMS54c2wJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L3hzbC9yZXNvdXJjZXMveHNsdC1uZXN0ZWQtc3R5bGVzaGVldHMx
LnhzbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBl
bmNvZGluZz0idXRmLTgiPz4KKworPHhzbDpzdHlsZXNoZWV0IHZlcnNpb249IjEuMCIgeG1sbnM6
eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iPgorCisgIDx4c2w6dGVt
cGxhdGUgbWF0Y2g9Ii8iPgorICAgIDxodG1sPgorICAgICAgPGJvZHk+CisgICAgICAgIDxzY3Jp
cHQ+aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOzwvc2NyaXB0PgorICAgICAgICA8ZGl2IGlkPSJteWRpdiI+CisgICAgICAg
ICAgIDxwPlRlc3RzIGEgY3Jhc2ggcmVzdWx0aW5nIGZyb20gYSBzdHJpbmcgbGl0ZXJhbCBpbiBh
IG5lc3RlZCBYU0wgc3R5bGVzaGVldC4gSWYgeW91IHJlYWNoZWQKKyAgICAgICAgICAgaGVyZSB3
aXRob3V0IGNyYXNoaW5nLCB0aGUgdGVzdCBwYXNzZWQuICBTZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzE1IC48L3A+CisgICAgICAgICAgIDxwPlNVQ0NFU1M8
L3A+CisgICAgICAgIDwvZGl2PgorICAgICAgPC9ib2R5PgorICAgIDwvaHRtbD4KKyAgPC94c2w6
dGVtcGxhdGU+CisKKzwveHNsOnN0eWxlc2hlZXQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25116</attachid>
            <date>2008-11-12 21:59:58 -0800</date>
            <delta_ts>2008-12-02 13:07:47 -0800</delta_ts>
            <desc>patch fo fix leaks</desc>
            <filename>XSLLeakFix</filename>
            <type>text/plain</type>
            <size>1119</size>
            <attacher name="Stephanie Lewis">slewis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODM2MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMDgtMTEtMTIgIFN0ZXBoYW5pZSAgPHNsZXdpc0BhcHBsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGNv
bnRleHQgbGVhayBpbiBYU0xTdHlsZVNoZWV0cy4KKwlTZWUgYnVnIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTcxNQorCisgICAgICAgICogeG1sL1hTTFN0eWxlU2hl
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcpOgor
CiAyMDA4LTExLTEyICBBbHAgVG9rZXIgIDxhbHBAbnVhbnRpLmNvbT4KIAogICAgICAgICBhdXRv
dG9vbHM6IExpc3Qgd2ViIHdvcmtlci1yZWxhdGVkIGhlYWRlcnMgbmVlZGVkIGZvciBhIHN1Y2Nl
c3NmdWwKSW5kZXg6IFdlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXQuY3BwCShyZXZpc2lvbiAzODMxOCkKKysrIFdlYkNv
cmUveG1sL1hTTFN0eWxlU2hlZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNiArMTcwLDgg
QEAgYm9vbCBYU0xTdHlsZVNoZWV0OjpwYXJzZVN0cmluZyhjb25zdCBTdAogICAgICAgICBocmVm
KCkudXRmOCgpLmRhdGEoKSwKICAgICAgICAgQk9NSGlnaEJ5dGUgPT0gMHhGRiA/ICJVVEYtMTZM
RSIgOiAiVVRGLTE2QkUiLCAKICAgICAgICAgWE1MX1BBUlNFX05PRU5UIHwgWE1MX1BBUlNFX0RU
REFUVFIgfCBYTUxfUEFSU0VfTk9XQVJOSU5HIHwgWE1MX1BBUlNFX05PQ0RBVEEpOworICAgIHht
bEZyZWVQYXJzZXJDdHh0KGN0eHQpOworICAgIAogICAgIGxvYWRDaGlsZFNoZWV0cygpOwogCiAg
ICAgeG1sU2V0U3RydWN0dXJlZEVycm9yRnVuYygwLCAwKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>