aboutsummaryrefslogtreecommitdiff
path: root/launcher
diff options
context:
space:
mode:
authorEzekiel Smith <ezekielsmith@protonmail.com>2022-02-26 01:55:11 +1100
committerGitHub <noreply@github.com>2022-02-26 01:55:11 +1100
commitf2b850ad200b1b871402c4d4bb2676f1e1288d3d (patch)
tree20ca5402bd7d55b20d35d4456d70c2a960075acb /launcher
parentccc27d1b7c8207580975122ad70f0f5687c4fffd (diff)
parentadacab33494f307a93e41ac0eee4fdd226c39614 (diff)
downloadPrismLauncher-f2b850ad200b1b871402c4d4bb2676f1e1288d3d.tar.gz
PrismLauncher-f2b850ad200b1b871402c4d4bb2676f1e1288d3d.tar.bz2
PrismLauncher-f2b850ad200b1b871402c4d4bb2676f1e1288d3d.zip
Merge pull request #183 from timoreo22/fix-versions-segfault
Fixed segfault in mod download
Diffstat (limited to 'launcher')
-rw-r--r--launcher/ui/pages/modplatform/flame/FlameModPage.cpp13
-rw-r--r--launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp11
2 files changed, 15 insertions, 9 deletions
diff --git a/launcher/ui/pages/modplatform/flame/FlameModPage.cpp b/launcher/ui/pages/modplatform/flame/FlameModPage.cpp
index a816c681..4afdd142 100644
--- a/launcher/ui/pages/modplatform/flame/FlameModPage.cpp
+++ b/launcher/ui/pages/modplatform/flame/FlameModPage.cpp
@@ -113,13 +113,12 @@ void FlameModPage::onSelectionChanged(QModelIndex first, QModelIndex second)
{
qDebug() << "Loading flame mod versions";
auto netJob = new NetJob(QString("Flame::ModVersions(%1)").arg(current.name), APPLICATION->network());
- std::shared_ptr<QByteArray> response = std::make_shared<QByteArray>();
+ auto response = new QByteArray();
int addonId = current.addonId;
- netJob->addNetAction(Net::Download::makeByteArray(QString("https://addons-ecs.forgesvc.net/api/v2/addon/%1/files").arg(addonId), response.get()));
+ netJob->addNetAction(Net::Download::makeByteArray(QString("https://addons-ecs.forgesvc.net/api/v2/addon/%1/files").arg(addonId), response));
- QObject::connect(netJob, &NetJob::succeeded, this, [this, response, netJob]
+ QObject::connect(netJob, &NetJob::succeeded, this, [this, response]
{
- netJob->deleteLater();
QJsonParseError parse_error;
QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error);
if(parse_error.error != QJsonParseError::NoError) {
@@ -150,9 +149,13 @@ void FlameModPage::onSelectionChanged(QModelIndex first, QModelIndex second)
if(ui->versionSelectionBox->count() == 0){
ui->versionSelectionBox->addItem(tr("No Valid Version found!"), QVariant(-1));
}
-
suggestCurrent();
});
+ QObject::connect(netJob, &NetJob::finished, this, [response, netJob]
+ {
+ netJob->deleteLater();
+ delete response;
+ });
netJob->start();
}
else
diff --git a/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp b/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp
index c5a54c29..577a7bcb 100644
--- a/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp
+++ b/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp
@@ -98,13 +98,12 @@ void ModrinthPage::onSelectionChanged(QModelIndex first, QModelIndex second)
{
qDebug() << "Loading Modrinth mod versions";
auto netJob = new NetJob(QString("Modrinth::ModVersions(%1)").arg(current.name), APPLICATION->network());
- std::shared_ptr<QByteArray> response = std::make_shared<QByteArray>();
+ auto response = new QByteArray();
QString addonId = current.addonId;
- netJob->addNetAction(Net::Download::makeByteArray(QString("https://api.modrinth.com/v2/project/%1/version").arg(addonId), response.get()));
+ netJob->addNetAction(Net::Download::makeByteArray(QString("https://api.modrinth.com/v2/project/%1/version").arg(addonId), response));
- QObject::connect(netJob, &NetJob::succeeded, this, [this, response, netJob]
+ QObject::connect(netJob, &NetJob::succeeded, this, [this, response]
{
- netJob->deleteLater();
QJsonParseError parse_error;
QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error);
if(parse_error.error != QJsonParseError::NoError) {
@@ -138,6 +137,10 @@ void ModrinthPage::onSelectionChanged(QModelIndex first, QModelIndex second)
suggestCurrent();
});
+ QObject::connect(netJob, &NetJob::finished, this, [response, netJob]{
+ netJob->deleteLater();
+ delete response;
+ });
netJob->start();
}
else