D17528: Refactor SlaveInterface::calcSpeed
Fabian Vogt
noreply at phabricator.kde.org
Mon Jan 14 12:27:33 GMT 2019
fvogt requested changes to this revision.
fvogt added inline comments.
This revision now requires changes to proceed.
INLINE COMMENTS
> slaveinterface.cpp:102
> + // Note for future reference: A list is maintained for sizes and times.
> + // Minimum list size is 1 and maximum list size is 8. Delta is calculated
> + // using first and last item from the list.
This comment should refer to `max_count` instead of hardcoding the number.
> slaveinterface.cpp:111
>
> + const SlaveInterfacePrivate::TransferInfo first = d->transfer_details.first();
> + const SlaveInterfacePrivate::TransferInfo last = {elapsed_time, (d->filesize - d->offset)};
This is undefined behaviour if the vector is empty.
> chinmoyr wrote in slaveinterface.cpp:113
> I doubt it will be zero here. `elapsed_time` stores elapsed time since the timer started so it will continue to grow (?) and the difference will always be > 0.
Doubt is not enough - it is absolutely necessary to special case that. A div / 0 is an instant crash on x86_64.
> slaveinterface.cpp:114
> + KIO::filesize_t lspeed = 1000 * (last.size - first.size) / (last.time - first.time);
> if (!lspeed) {
> + d->transfer_details.clear();
What does this actually test for?
> slaveinterface_p.h:62
> + };
> + QVector<TransferInfo> transfer_details;
> + QElapsedTimer elapsed_timer;
Is there any reason to use a qvector instead of a std::array/c array?
It'll only introduce more overhead.
> dfaure wrote in slaveinterface_p.h:39
> global namespace pollution, better keep this within KIO::SlaveInterfacePrivate.
I absolutely agree here.
There is no reason to have this as a global variable, especially not a "static" one in a header.
Please move it into the class.
REPOSITORY
R241 KIO
REVISION DETAIL
https://phabricator.kde.org/D17528
To: chinmoyr, dfaure, fvogt
Cc: fvogt, davidedmundson, broulik, bruns, kde-frameworks-devel, michaelh, ngraham
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-frameworks-devel/attachments/20190114/35cfe190/attachment.html>
More information about the Kde-frameworks-devel
mailing list