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

Reply via email to