<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="https://git.reviewboard.kde.org/r/114715/">https://git.reviewboard.kde.org/r/114715/</a>
     </td>
    </tr>
   </table>
   <br />





 <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">As discussed on the mailing list, I think that this is a valid approach to ensure that the custom allocator is not deleted before the last KCompletion instance using it. The change might not only be beneficial on Windows - maybe the code is a time bomb waiting to explode also on other platforms.

I think it would be slightly nicer to initialize the allocator when it's first used, rather than when the library is loaded, but this is unrelated to the purpose of this patch. Maybe something to consider for Frameworks, to which this patch must be ported manually anyway?

(Another question for Frameworks would obviously be how much the performance is actually improved by the custom allocator, and thus, if it's worth keeping it. As I said in http://lists.kde.org/?l=kde-devel&m=138684405315855&w=1, there were some claims in 2002 that it greatly speeds up KCompletion, but I'm not sure if these claims can (still) be trusted).

In any case, I don't have good knowledge of KCompletion, so I don't feel qualified to say "Ship It!" (at least not before waiting another week or two for possible comments from others).</pre>
 <br />









<p>- Frank Reininghaus</p>


<br />
<p>On January 3rd, 2014, 5:52 p.m. UTC, Kevin Funk wrote:</p>








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

<div>Review request for kdelibs and Frank Reininghaus.</div>
<div>By Kevin Funk.</div>


<p style="color: grey;"><i>Updated Jan. 3, 2014, 5:52 p.m.</i></p>







<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Bugs: </b>


 <a href="http://bugs.kde.org/show_bug.cgi?id=327599">327599</a>


</div>



<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt;">Repository: </b>
kdelibs
</div>


<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;">Attempt to fix KZoneAllocator issue

kcompletion.p_h: Make the static KZoneAllocator member of KCompTreeNode
a shared pointer so external users can hold a reference to it.

kcompletion.cpp: Hold a reference to KCompTreeNode's KZoneAllocator
instance so we avoid deleting the KZoneAllocator too early. See attached
bug report for possible causes. (Hint: It crashes on Windows because
~KZoneAllocator is called to early.)

kallocator.cpp: Use printf instead of qDebug(), because this code path
code might be called very late during destruction and qDebug() will
crash deep inside Qt.

Also see discussion:
http://lists.kde.org/?l=kde-devel&m=138583383708455&w=1

BUG: 327599
CCBUG: 243375</pre>
  </td>
 </tr>
</table>



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

 <li>kdecore/util/kallocator.cpp <span style="color: grey">(8b21120c62c513ea41686fe8185ec2808fe5d83a)</span></li>

 <li>kdeui/util/kcompletion.cpp <span style="color: grey">(340aa92b900d670e2ad73f70a63d5221d0feed1d)</span></li>

 <li>kdeui/util/kcompletion_p.h <span style="color: grey">(1cf31db3f16fe3421415cd54265eee20bb998710)</span></li>

</ul>

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







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








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