QHttpThreadDelegate: use new(std::nothrow) instead of try..catch
We usually compile without exceptions, so the try..catch is a noop. So, if the `new` fails we would crash (or get UB) anyway. Instead of that, use the nothrow version of `new` and check the result. Pick-to: 6.6 6.5 Change-Id: I1902b717c70afcc44c1f3237370aae346262452a Reviewed-by: Marc Mutz <marc.mutz@qt.io> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
This commit is contained in:
parent
72d51f1c42
commit
51c812af07
@ -584,14 +584,11 @@ void QHttpThreadDelegate::headerChangedSlot()
|
||||
// Is using a zerocopy buffer allowed by user and possible with this reply?
|
||||
if (httpReply->supportsUserProvidedDownloadBuffer()
|
||||
&& (downloadBufferMaximumSize > 0) && (httpReply->contentLength() <= downloadBufferMaximumSize)) {
|
||||
QT_TRY {
|
||||
char *buf = new char[httpReply->contentLength()]; // throws if allocation fails
|
||||
if (buf) {
|
||||
downloadBuffer = QSharedPointer<char>(buf, [](auto p) { delete[] p; });
|
||||
httpReply->setUserProvidedDownloadBuffer(buf);
|
||||
}
|
||||
} QT_CATCH(const std::bad_alloc &) {
|
||||
// in out of memory situations, don't use downloadbuffer.
|
||||
char *buf = new (std::nothrow) char[httpReply->contentLength()];
|
||||
// in out of memory situations, don't use downloadBuffer.
|
||||
if (buf) {
|
||||
downloadBuffer = QSharedPointer<char>(buf, [](auto p) { delete[] p; });
|
||||
httpReply->setUserProvidedDownloadBuffer(buf);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user