<table><tr><td style="">lvsouza 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/D14302">View Revision</a></tr></table><br /><div><div><p>I think I know what is happening. This line</p>

<p>QDeadlineTimer timer(qMax(timeout, -1));    // QDT only takes -1 as "forever"</p>

<p>passes the result of qMax() to QDeadlineTimer's constructor. That constructor receives a quint64. Since qMax() is a template:</p>

<p>inline const T &qMax(const T &a, const T &b) { return (a < b) ? b : a; }</p>

<p>it will use the type of the assigned variable (quint64 in this case) as T and casting -1 to INT64_MAX. Changing the line to:</p>

<p>QDeadlineTimer timer(qMax(timeout, qint64(-1)));</p>

<p>should solve the problem. If it does not then this should work:</p>

<p>qint64 maxTimeout = qMax(timeout, -1);<br />
QDeadlineTimer timer(maxTimeout);</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R271 KDBusAddons</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D14302">https://phabricator.kde.org/D14302</a></div></div><br /><div><strong>To: </strong>jtamate, dfaure, Frameworks, thiago<br /><strong>Cc: </strong>lvsouza, kde-frameworks-devel, michaelh, ngraham, bruns<br /></div>