<table><tr><td style="">anthonyfieroni 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/D26267">View Revision</a></tr></table><br /><div><div><p><tt style="background: #ebebeb; font-size: 13px;">auto c = client().toStrongRef().data();</tt><br />
This is completely wrong, the idea behind shared / weak pointer is ability to know when non-owning resource goes out of scope. by calling toStrongRef you extend its lifetime if and only if it exists at time of call then holding this ref you ensure that resource will not be destroyed meanwhile. By holding data() it does nothing to extend resource lifetime but getting a pointer to well-known dying object. It should be<br />
<tt style="background: #ebebeb; font-size: 13px;">auto c = m_decoration.data()->client().toStrongRef();</tt><br />
Last but not least, c can be nullptr check against null should be performed as well. Exp</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);">xcb_window_t windowId;
auto c = m_decoration.data()->client().toStrongRef();
if (c && (windowId = c->windowId())) {
} else {
    hide();
}</pre></div>

<p>It should be added checks in all use places.</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R31 Breeze</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D26267">https://phabricator.kde.org/D26267</a></div></div><br /><div><strong>To: </strong>ndavis, Breeze, Plasma<br /><strong>Cc: </strong>anthonyfieroni, plasma-devel, LeGast00n, The-Feren-OS-Dev, jraleigh, zachus, fbampaloukas, GB_2, ragreen, ZrenBot, ngraham, alexeymin, himcesjf, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol, ahiemstra, mart<br /></div>