From 50b318cc31ba11de8deb20c5b277db2f2e348e4c Mon Sep 17 00:00:00 2001 From: "Admiral H. Curtiss" Date: Mon, 15 Jul 2024 21:47:59 +0200 Subject: [PATCH] Qt/AchievementHeaderWidget: Don't crash when we get an empty player or game badge --- .../Achievements/AchievementHeaderWidget.cpp | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/Source/Core/DolphinQt/Achievements/AchievementHeaderWidget.cpp b/Source/Core/DolphinQt/Achievements/AchievementHeaderWidget.cpp index 38a2c90ec4..41e87ef5e2 100644 --- a/Source/Core/DolphinQt/Achievements/AchievementHeaderWidget.cpp +++ b/Source/Core/DolphinQt/Achievements/AchievementHeaderWidget.cpp @@ -84,10 +84,13 @@ void AchievementHeaderWidget::UpdateData() m_user_icon->setVisible(false); m_user_icon->clear(); m_user_icon->setText({}); - QImage i_user_icon(&player_badge.data.front(), player_badge.width, player_badge.height, - QImage::Format_RGBA8888); - m_user_icon->setPixmap(QPixmap::fromImage(i_user_icon) - .scaled(64, 64, Qt::KeepAspectRatio, Qt::SmoothTransformation)); + if (!player_badge.data.empty()) + { + QImage i_user_icon(player_badge.data.data(), player_badge.width, player_badge.height, + QImage::Format_RGBA8888); + m_user_icon->setPixmap(QPixmap::fromImage(i_user_icon) + .scaled(64, 64, Qt::KeepAspectRatio, Qt::SmoothTransformation)); + } m_user_icon->adjustSize(); m_user_icon->setStyleSheet(QStringLiteral("border: 4px solid transparent")); m_user_icon->setVisible(true); @@ -100,10 +103,13 @@ void AchievementHeaderWidget::UpdateData() { rc_client_user_game_summary_t game_summary; rc_client_get_user_game_summary(instance.GetClient(), &game_summary); - QImage i_game_icon(&game_badge.data.front(), game_badge.width, game_badge.height, - QImage::Format_RGBA8888); - m_game_icon->setPixmap(QPixmap::fromImage(i_game_icon) - .scaled(64, 64, Qt::KeepAspectRatio, Qt::SmoothTransformation)); + if (game_badge.data.empty()) + { + QImage i_game_icon(game_badge.data.data(), game_badge.width, game_badge.height, + QImage::Format_RGBA8888); + m_game_icon->setPixmap(QPixmap::fromImage(i_game_icon) + .scaled(64, 64, Qt::KeepAspectRatio, Qt::SmoothTransformation)); + } m_game_icon->adjustSize(); std::string_view color = AchievementManager::GRAY; if (game_summary.num_core_achievements == game_summary.num_unlocked_achievements)