Fix mismatched new[] / delete[] valgrind warning
QScopedPointer by default uses delete, even if we used new [].
We would have to use the following verbose syntax:
QScopedPointer<uchar, QScopedPointerArrayDeleter<uchar>> buf(new uchar[...]);
But std::unique_ptr can do the right thing by just looking at the template
parameter, so let's use that.