<table><tr><td style="">croick marked 4 inline comments as done.<br />croick added a comment.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D6308" rel="noreferrer">View Revision</a></tr></table><br /><div><div><blockquote style="border-left: 3px solid #8C98B8;
          color: #6B748C;
          font-style: italic;
          margin: 4px 0 12px 0;
          padding: 8px 12px;
          background-color: #F8F9FC;">
<div style="font-style: normal;
          padding-bottom: 4px;">In <a href="https://phabricator.kde.org/D6308#118881" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;" rel="noreferrer">D6308#118881</a>, <a href="https://phabricator.kde.org/p/anthonyfieroni/" style="
              border-color: #f1f7ff;
              color: #19558d;
              background-color: #f1f7ff;
                border: 1px solid transparent;
                border-radius: 3px;
                font-weight: bold;
                padding: 0 4px;" rel="noreferrer">@anthonyfieroni</a> wrote:</div>
<div style="margin: 0;
          padding: 0;
          border: 0;
          color: rgb(107, 116, 140);"><p>You still can make a wrapper around QPointer prevent call delete after exec() check i.e.</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">template<class T>
class QPointerWrapper
{
QPoniter<T> ptr;
public:
    QPointerWrapper(T *rawPtr) : ptr(rawPtr) {}
    ~QPointerWrapper() { delete ptr; }
   QPointer<T>& operator->() { return ptr; }
};
// usage
QPointerWrapper<VcsCommitDialog> commitDialog = new VcsCommitDialog(patchSource);
commitDialog->exec();
// without delete commitDialog :)</pre></div></div>
</blockquote>

<p>Your proposal is now in a utility class, hopefully in the right place. The dialog is constructed in the wrapper constructor, so the code only adds few overhead (in terms of characters) compared to the stack version:</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">DialogWrapper<VcsCommitDialog> commitDialog(patchSource);
commitDialog->exec();</pre></div></div></div><br /><div><strong>REPOSITORY</strong><div><div>R33 KDevPlatform</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D6308" rel="noreferrer">https://phabricator.kde.org/D6308</a></div></div><br /><div><strong>To: </strong>croick, KDevelop<br /><strong>Cc: </strong>anthonyfieroni, kdevelop-devel<br /></div>