<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="http://git.reviewboard.kde.org/r/103674/">http://git.reviewboard.kde.org/r/103674/</a>
     </td>
    </tr>
   </table>
   <br />


<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('http://git.reviewboard.kde.org/media/rb/images/review_request_box_top_bg.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for Calligra.</div>
<div>By Dag Andersen.</div>


<p style="color: grey;"><i>Updated Jan. 11, 2012, 2:21 p.m.</i></p>



<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Changes</h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Also append text nodes to document</pre>
  </td>
 </tr>
</table>




<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
 <table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Symptom:
Plan (sometimes) crashes and valgrind reports "Invalid read size".

When KoXml* is converted to QDom* a temporary QDomDocument is used to create nodes.
This results in deleted nodes when the document goes out of scope.
>From QDomDocument api docs:
"Since elements, text nodes, comments, processing instructions, etc., cannot exist outside the context of a document, the document class also contains the factory functions needed to create these objects. The node objects created have an ownerDocument() function which associates them with the document within whose context they were created."

In short the patch passes ownerDoc as a reference and appends the converted nodes to the ownerDoc.
Also asQDomNode()/asQDomElement() does not return anything, the node must be found in ownerDoc.

Modifications to the users is not included.

Note that the patch is not quite finished because I don't understand the TestXmlReaderWithoutSpaces unit test.</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Unit test passes (but it did before too).
No crash in Plan.</pre>
  </td>
 </tr>
</table>




<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> (updated)</h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>libs/odf/KoXmlReader.h <span style="color: grey">(231651c)</span></li>

 <li>libs/odf/KoXmlReader.cpp <span style="color: grey">(13a6d47)</span></li>

 <li>libs/odf/tests/TestXmlReader.cpp <span style="color: grey">(6631b64)</span></li>

 <li>libs/odf/tests/TestXmlReaderWithoutSpaces.cpp <span style="color: grey">(5179846)</span></li>

</ul>

<p><a href="http://git.reviewboard.kde.org/r/103674/diff/" style="margin-left: 3em;">View Diff</a></p>




  </td>
 </tr>
</table>




  </div>
 </body>
</html>