diff options
Diffstat (limited to 'launcher/net')
-rw-r--r-- | launcher/net/ApiDownload.cpp | 2 | ||||
-rw-r--r-- | launcher/net/ApiDownload.h | 2 | ||||
-rw-r--r-- | launcher/net/ApiUpload.cpp | 2 | ||||
-rw-r--r-- | launcher/net/ApiUpload.h | 2 | ||||
-rw-r--r-- | launcher/net/ByteArraySink.h | 9 | ||||
-rw-r--r-- | launcher/net/Download.cpp | 3 | ||||
-rw-r--r-- | launcher/net/Download.h | 2 | ||||
-rw-r--r-- | launcher/net/Upload.cpp | 3 | ||||
-rw-r--r-- | launcher/net/Upload.h | 2 |
9 files changed, 14 insertions, 13 deletions
diff --git a/launcher/net/ApiDownload.cpp b/launcher/net/ApiDownload.cpp index df476ce8..aaa8ff65 100644 --- a/launcher/net/ApiDownload.cpp +++ b/launcher/net/ApiDownload.cpp @@ -37,7 +37,7 @@ auto ApiDownload::makeCached(QUrl url, MetaEntryPtr entry, Options options) -> D return dl; } -auto ApiDownload::makeByteArray(QUrl url, QByteArray* output, Options options) -> Download::Ptr +auto ApiDownload::makeByteArray(QUrl url, std::shared_ptr<QByteArray> output, Options options) -> Download::Ptr { auto dl = makeShared<ApiDownload>(); dl->m_url = url; diff --git a/launcher/net/ApiDownload.h b/launcher/net/ApiDownload.h index 4d0a3292..638c94e1 100644 --- a/launcher/net/ApiDownload.h +++ b/launcher/net/ApiDownload.h @@ -29,7 +29,7 @@ class ApiDownload : public Download { virtual ~ApiDownload() = default; static auto makeCached(QUrl url, MetaEntryPtr entry, Options options = Option::NoOptions) -> Download::Ptr; - static auto makeByteArray(QUrl url, QByteArray* output, Options options = Option::NoOptions) -> Download::Ptr; + static auto makeByteArray(QUrl url, std::shared_ptr<QByteArray> output, Options options = Option::NoOptions) -> Download::Ptr; static auto makeFile(QUrl url, QString path, Options options = Option::NoOptions) -> Download::Ptr; void init() override; diff --git a/launcher/net/ApiUpload.cpp b/launcher/net/ApiUpload.cpp index 497573b2..96ebc49c 100644 --- a/launcher/net/ApiUpload.cpp +++ b/launcher/net/ApiUpload.cpp @@ -25,7 +25,7 @@ namespace Net { -Upload::Ptr ApiUpload::makeByteArray(QUrl url, QByteArray* output, QByteArray m_post_data) +Upload::Ptr ApiUpload::makeByteArray(QUrl url, std::shared_ptr<QByteArray> output, QByteArray m_post_data) { auto up = makeShared<ApiUpload>(); up->m_url = std::move(url); diff --git a/launcher/net/ApiUpload.h b/launcher/net/ApiUpload.h index 3aeac99d..b12842b0 100644 --- a/launcher/net/ApiUpload.h +++ b/launcher/net/ApiUpload.h @@ -28,7 +28,7 @@ class ApiUpload : public Upload { public: virtual ~ApiUpload() = default; - static Upload::Ptr makeByteArray(QUrl url, QByteArray* output, QByteArray m_post_data); + static Upload::Ptr makeByteArray(QUrl url, std::shared_ptr<QByteArray> output, QByteArray m_post_data); void init() override; }; diff --git a/launcher/net/ByteArraySink.h b/launcher/net/ByteArraySink.h index 728193b3..7b8f0f8a 100644 --- a/launcher/net/ByteArraySink.h +++ b/launcher/net/ByteArraySink.h @@ -1,7 +1,8 @@ // SPDX-License-Identifier: GPL-3.0-only /* - * PolyMC - Minecraft Launcher + * Prism Launcher - Minecraft Launcher * Copyright (c) 2022 flowln <flowlnlnln@gmail.com> + * Copyright (c) 2023 Trial97 <alexandru.tripon97@gmail.com> * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -41,12 +42,10 @@ namespace Net { /* * Sink object for downloads that uses an external QByteArray it doesn't own as a target. - * FIXME: It is possible that the QByteArray is freed while we're doing some operation on it, - * causing a segmentation fault. */ class ByteArraySink : public Sink { public: - ByteArraySink(QByteArray* output) : m_output(output){}; + ByteArraySink(std::shared_ptr<QByteArray> output) : m_output(output){}; virtual ~ByteArraySink() = default; @@ -93,6 +92,6 @@ class ByteArraySink : public Sink { auto hasLocalData() -> bool override { return false; } private: - QByteArray* m_output; + std::shared_ptr<QByteArray> m_output; }; } // namespace Net diff --git a/launcher/net/Download.cpp b/launcher/net/Download.cpp index 47966da5..c8645213 100644 --- a/launcher/net/Download.cpp +++ b/launcher/net/Download.cpp @@ -41,6 +41,7 @@ #include <QDateTime> #include <QFileInfo> +#include <memory> #include "ByteArraySink.h" #include "ChecksumValidator.h" @@ -74,7 +75,7 @@ auto Download::makeCached(QUrl url, MetaEntryPtr entry, Options options) -> Down } #endif -auto Download::makeByteArray(QUrl url, QByteArray* output, Options options) -> Download::Ptr +auto Download::makeByteArray(QUrl url, std::shared_ptr<QByteArray> output, Options options) -> Download::Ptr { auto dl = makeShared<Download>(); dl->m_url = url; diff --git a/launcher/net/Download.h b/launcher/net/Download.h index fee04feb..19f675ad 100644 --- a/launcher/net/Download.h +++ b/launcher/net/Download.h @@ -60,7 +60,7 @@ class Download : public NetAction { ~Download() override = default; static auto makeCached(QUrl url, MetaEntryPtr entry, Options options = Option::NoOptions) -> Download::Ptr; - static auto makeByteArray(QUrl url, QByteArray* output, Options options = Option::NoOptions) -> Download::Ptr; + static auto makeByteArray(QUrl url, std::shared_ptr<QByteArray> output, Options options = Option::NoOptions) -> Download::Ptr; static auto makeFile(QUrl url, QString path, Options options = Option::NoOptions) -> Download::Ptr; void init() override {}; diff --git a/launcher/net/Upload.cpp b/launcher/net/Upload.cpp index 27759f53..8881b16a 100644 --- a/launcher/net/Upload.cpp +++ b/launcher/net/Upload.cpp @@ -38,6 +38,7 @@ #include "Upload.h" +#include <memory> #include <utility> #include "BuildConfig.h" #include "ByteArraySink.h" @@ -256,7 +257,7 @@ void Upload::executeTask() connect(rep, &QNetworkReply::readyRead, this, &Upload::downloadReadyRead); } -Upload::Ptr Upload::makeByteArray(QUrl url, QByteArray* output, QByteArray m_post_data) +Upload::Ptr Upload::makeByteArray(QUrl url, std::shared_ptr<QByteArray> output, QByteArray m_post_data) { auto up = makeShared<Upload>(); up->m_url = std::move(url); diff --git a/launcher/net/Upload.h b/launcher/net/Upload.h index 2220c035..8be3f2c1 100644 --- a/launcher/net/Upload.h +++ b/launcher/net/Upload.h @@ -48,7 +48,7 @@ class Upload : public NetAction { public: using Ptr = shared_qobject_ptr<Upload>; - static Upload::Ptr makeByteArray(QUrl url, QByteArray* output, QByteArray m_post_data); + static Upload::Ptr makeByteArray(QUrl url, std::shared_ptr<QByteArray> output, QByteArray m_post_data); auto abort() -> bool override; auto canAbort() const -> bool override { return true; }; virtual void init() override{}; |