diff --git a/CHANGELOG.md b/CHANGELOG.md index cd00604d3bd..586328d019b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -88,6 +88,7 @@ - Dev: Refactored the Image Uploader feature. (#4971) - Dev: Fixed deadlock and use-after-free in tests. (#4981) - Dev: Load less message history upon reconnects. (#5001) +- Dev: Fixed most compiler warnings. (#5028) ## 2.4.6 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1c6c3c0a0f3..53ed53a7bc9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1067,7 +1067,6 @@ else () -Wno-switch -Wno-deprecated-declarations -Wno-sign-compare - -Wno-unused-variable # Disabling strict-aliasing warnings for now, although we probably want to re-enable this in the future -Wno-strict-aliasing diff --git a/src/RunGui.cpp b/src/RunGui.cpp index 62f1d6a43d5..a495fbef414 100644 --- a/src/RunGui.cpp +++ b/src/RunGui.cpp @@ -77,7 +77,7 @@ namespace { { // set up the QApplication flags QApplication::setAttribute(Qt::AA_Use96Dpi, true); -#ifdef Q_OS_WIN32 +#if defined(Q_OS_WIN32) && QT_VERSION < QT_VERSION_CHECK(6, 0, 0) QApplication::setAttribute(Qt::AA_DisableHighDpiScaling, true); #endif diff --git a/src/common/Env.cpp b/src/common/Env.cpp index 174cae67bf6..6a7f5dac3ef 100644 --- a/src/common/Env.cpp +++ b/src/common/Env.cpp @@ -3,6 +3,7 @@ #include "common/QLogging.hpp" #include "util/TypeName.hpp" +#include #include namespace chatterino { @@ -10,16 +11,8 @@ namespace chatterino { namespace { template - void warn(const char *envName, T defaultValue) + void warn(const char *envName, const QString &envString, T defaultValue) { - auto *envString = std::getenv(envName); - if (!envString) - { - // This function is not supposed to be used for non-existant - // environment variables. - return; - } - const auto typeName = QString::fromStdString( std::string(type_name())); @@ -33,23 +26,12 @@ namespace { .arg(defaultValue); } - QString readStringEnv(const char *envName, QString defaultValue) - { - auto envString = std::getenv(envName); - if (envString != nullptr) - { - return QString(envString); - } - - return defaultValue; - } - std::optional readOptionalStringEnv(const char *envName) { - auto envString = std::getenv(envName); - if (envString != nullptr) + auto envString = qEnvironmentVariable(envName); + if (!envString.isEmpty()) { - return QString(envString); + return envString; } return std::nullopt; @@ -57,30 +39,28 @@ namespace { uint16_t readPortEnv(const char *envName, uint16_t defaultValue) { - auto envString = std::getenv(envName); - if (envString != nullptr) + auto envString = qEnvironmentVariable(envName); + if (!envString.isEmpty()) { - bool ok; - auto val = QString(envString).toUShort(&ok); + bool ok = false; + auto val = envString.toUShort(&ok); if (ok) { return val; } - else - { - warn(envName, defaultValue); - } + + warn(envName, envString, defaultValue); } return defaultValue; } - uint16_t readBoolEnv(const char *envName, bool defaultValue) + bool readBoolEnv(const char *envName, bool defaultValue) { - auto envString = std::getenv(envName); - if (envString != nullptr) + auto envString = qEnvironmentVariable(envName); + if (!envString.isEmpty()) { - return QVariant(QString(envString)).toBool(); + return QVariant(envString).toBool(); } return defaultValue; @@ -90,14 +70,14 @@ namespace { Env::Env() : recentMessagesApiUrl( - readStringEnv("CHATTERINO2_RECENT_MESSAGES_URL", - "https://recent-messages.robotty.de/api/v2/" - "recent-messages/%1")) - , linkResolverUrl(readStringEnv( + qEnvironmentVariable("CHATTERINO2_RECENT_MESSAGES_URL", + "https://recent-messages.robotty.de/api/v2/" + "recent-messages/%1")) + , linkResolverUrl(qEnvironmentVariable( "CHATTERINO2_LINK_RESOLVER_URL", "https://braize.pajlada.com/chatterino/link_resolver/%1")) - , twitchServerHost( - readStringEnv("CHATTERINO2_TWITCH_SERVER_HOST", "irc.chat.twitch.tv")) + , twitchServerHost(qEnvironmentVariable("CHATTERINO2_TWITCH_SERVER_HOST", + "irc.chat.twitch.tv")) , twitchServerPort(readPortEnv("CHATTERINO2_TWITCH_SERVER_PORT", 443)) , twitchServerSecure(readBoolEnv("CHATTERINO2_TWITCH_SERVER_SECURE", true)) , proxyUrl(readOptionalStringEnv("CHATTERINO2_PROXY_URL")) diff --git a/src/controllers/commands/builtin/twitch/Shoutout.cpp b/src/controllers/commands/builtin/twitch/Shoutout.cpp index b5077daecd2..af012cd34ca 100644 --- a/src/controllers/commands/builtin/twitch/Shoutout.cpp +++ b/src/controllers/commands/builtin/twitch/Shoutout.cpp @@ -47,7 +47,7 @@ QString sendShoutout(const CommandContext &ctx) getHelix()->getUserByName( target, - [twitchChannel, channel, currentUser, &target](const auto targetUser) { + [twitchChannel, channel, currentUser](const auto targetUser) { getHelix()->sendShoutout( twitchChannel->roomId(), targetUser.id, currentUser->getUserId(), diff --git a/src/controllers/notifications/NotificationController.cpp b/src/controllers/notifications/NotificationController.cpp index 4866bf9872f..80d13a54012 100644 --- a/src/controllers/notifications/NotificationController.cpp +++ b/src/controllers/notifications/NotificationController.cpp @@ -208,11 +208,11 @@ void NotificationController::checkStream(bool live, QString channelName) void NotificationController::removeFakeChannel(const QString channelName) { - auto i = std::find(fakeTwitchChannels.begin(), fakeTwitchChannels.end(), - channelName); - if (i != fakeTwitchChannels.end()) + auto it = std::find(fakeTwitchChannels.begin(), fakeTwitchChannels.end(), + channelName); + if (it != fakeTwitchChannels.end()) { - fakeTwitchChannels.erase(i); + fakeTwitchChannels.erase(it); // "delete" old 'CHANNEL is live' message LimitedQueueSnapshot snapshot = getApp()->twitch->liveChannel->getMessageSnapshot(); diff --git a/src/controllers/sound/MiniaudioBackend.cpp b/src/controllers/sound/MiniaudioBackend.cpp index 288dd50857b..d9afa6c6ceb 100644 --- a/src/controllers/sound/MiniaudioBackend.cpp +++ b/src/controllers/sound/MiniaudioBackend.cpp @@ -256,8 +256,8 @@ void MiniaudioBackend::play(const QUrl &sound) if (sound.isLocalFile()) { auto soundPath = sound.toLocalFile(); - auto result = ma_engine_play_sound(this->engine.get(), - qPrintable(soundPath), nullptr); + result = ma_engine_play_sound(this->engine.get(), + qPrintable(soundPath), nullptr); if (result != MA_SUCCESS) { qCWarning(chatterinoSound) << "Failed to play sound" << sound diff --git a/src/providers/irc/AbstractIrcServer.cpp b/src/providers/irc/AbstractIrcServer.cpp index 9c30049e707..b71bf46d3b8 100644 --- a/src/providers/irc/AbstractIrcServer.cpp +++ b/src/providers/irc/AbstractIrcServer.cpp @@ -11,10 +11,6 @@ namespace chatterino { -const int RECONNECT_BASE_INTERVAL = 2000; -// 60 falloff counter means it will try to reconnect at most every 60*2 seconds -const int MAX_FALLOFF_COUNTER = 60; - // Ratelimits for joinBucket_ const int JOIN_RATELIMIT_BUDGET = 18; const int JOIN_RATELIMIT_COOLDOWN = 12500; diff --git a/src/providers/irc/IrcConnection2.cpp b/src/providers/irc/IrcConnection2.cpp index b06343f8450..96619cf82cd 100644 --- a/src/providers/irc/IrcConnection2.cpp +++ b/src/providers/irc/IrcConnection2.cpp @@ -16,7 +16,7 @@ IrcConnection::IrcConnection(QObject *parent) { // Log connection errors for ease-of-debugging QObject::connect(this, &Communi::IrcConnection::socketError, this, - [this](QAbstractSocket::SocketError error) { + [](QAbstractSocket::SocketError error) { qCDebug(chatterinoIrc) << "Connection error:" << error; }); diff --git a/src/providers/twitch/PubSubManager.cpp b/src/providers/twitch/PubSubManager.cpp index cc240d01d45..80727ea4b8d 100644 --- a/src/providers/twitch/PubSubManager.cpp +++ b/src/providers/twitch/PubSubManager.cpp @@ -210,7 +210,6 @@ PubSub::PubSub(const QString &host, std::chrono::seconds pingInterval) } action.target.login = args[0].toString(); - bool ok; action.messageText = args[1].toString(); action.messageId = args[2].toString(); diff --git a/src/providers/twitch/TwitchChannel.cpp b/src/providers/twitch/TwitchChannel.cpp index e2826fd42e1..4652f44fe09 100644 --- a/src/providers/twitch/TwitchChannel.cpp +++ b/src/providers/twitch/TwitchChannel.cpp @@ -56,7 +56,6 @@ namespace { #else const QString MAGIC_MESSAGE_SUFFIX = QString::fromUtf8(u8" \U000E0000"); #endif - constexpr int TITLE_REFRESH_PERIOD = 10000; constexpr int CLIP_CREATION_COOLDOWN = 5000; const QString CLIPS_LINK("https://clips.twitch.tv/%1"); const QString CLIPS_FAILURE_CLIPS_DISABLED_TEXT( diff --git a/src/providers/twitch/TwitchMessageBuilder.cpp b/src/providers/twitch/TwitchMessageBuilder.cpp index 00f9bf68870..8ef6bcc66e2 100644 --- a/src/providers/twitch/TwitchMessageBuilder.cpp +++ b/src/providers/twitch/TwitchMessageBuilder.cpp @@ -1729,7 +1729,7 @@ void TwitchMessageBuilder::listOfUsersSystemMessage( MessagePtr TwitchMessageBuilder::buildHypeChatMessage( Communi::IrcPrivateMessage *message) { - auto level = message->tag(u"pinned-chat-paid-level"_s).toString(); + auto levelID = message->tag(u"pinned-chat-paid-level"_s).toString(); auto currency = message->tag(u"pinned-chat-paid-currency"_s).toString(); bool okAmount = false; auto amount = message->tag(u"pinned-chat-paid-amount"_s).toInt(&okAmount); @@ -1743,7 +1743,7 @@ MessagePtr TwitchMessageBuilder::buildHypeChatMessage( // additionally, there's `pinned-chat-paid-is-system-message` which isn't used by Chatterino. QString subtitle; - auto levelIt = HYPE_CHAT_PAID_LEVEL.find(level); + auto levelIt = HYPE_CHAT_PAID_LEVEL.find(levelID); if (levelIt != HYPE_CHAT_PAID_LEVEL.end()) { const auto &level = levelIt->second; diff --git a/src/singletons/WindowManager.cpp b/src/singletons/WindowManager.cpp index 5174f2a3399..d8692efda5a 100644 --- a/src/singletons/WindowManager.cpp +++ b/src/singletons/WindowManager.cpp @@ -750,7 +750,7 @@ void WindowManager::applyWindowLayout(const WindowLayout &layout) // out of bounds windows auto screens = qApp->screens(); bool outOfBounds = - !getenv("I3SOCK") && + !qEnvironmentVariableIsSet("I3SOCK") && std::none_of(screens.begin(), screens.end(), [&](QScreen *screen) { return screen->availableGeometry().intersects( diff --git a/src/util/AttachToConsole.cpp b/src/util/AttachToConsole.cpp index 5e5ca77ff8d..41689c699af 100644 --- a/src/util/AttachToConsole.cpp +++ b/src/util/AttachToConsole.cpp @@ -3,7 +3,7 @@ #ifdef USEWINSDK # include -# include +# include #endif namespace chatterino { @@ -13,8 +13,8 @@ void attachToConsole() #ifdef USEWINSDK if (AttachConsole(ATTACH_PARENT_PROCESS)) { - freopen("CONOUT$", "w", stdout); - freopen("CONOUT$", "w", stderr); + std::ignore = freopen_s(nullptr, "CONOUT$", "w", stdout); + std::ignore = freopen_s(nullptr, "CONOUT$", "w", stderr); } #endif } diff --git a/src/widgets/BaseWindow.cpp b/src/widgets/BaseWindow.cpp index 6fdfe75c717..062f9efc969 100644 --- a/src/widgets/BaseWindow.cpp +++ b/src/widgets/BaseWindow.cpp @@ -118,7 +118,7 @@ float BaseWindow::scale() const float BaseWindow::qtFontScale() const { - return this->scale() / std::max(0.01, this->nativeScale_); + return this->scale() / std::max(0.01F, this->nativeScale_); } void BaseWindow::init() diff --git a/src/widgets/Label.cpp b/src/widgets/Label.cpp index 7f5e8a4ce80..bcec1d28072 100644 --- a/src/widgets/Label.cpp +++ b/src/widgets/Label.cpp @@ -95,11 +95,13 @@ void Label::paintEvent(QPaintEvent *) QFontMetrics metrics = getFonts()->getFontMetrics( this->getFontStyle(), this->scale() * 96.f / - std::max(0.01, this->logicalDpiX() * deviceDpi)); + std::max( + 0.01F, static_cast(this->logicalDpiX() * deviceDpi))); painter.setFont(getFonts()->getFont( this->getFontStyle(), this->scale() * 96.f / - std::max(0.02, this->logicalDpiX() * deviceDpi))); + std::max( + 0.02F, static_cast(this->logicalDpiX() * deviceDpi)))); int offset = this->getOffset(); diff --git a/src/widgets/dialogs/ReplyThreadPopup.cpp b/src/widgets/dialogs/ReplyThreadPopup.cpp index eeb0d82b4e4..a9501ca1243 100644 --- a/src/widgets/dialogs/ReplyThreadPopup.cpp +++ b/src/widgets/dialogs/ReplyThreadPopup.cpp @@ -238,11 +238,11 @@ void ReplyThreadPopup::addMessagesFromThread() this->ui_.threadView->setChannel(this->virtualChannel_); this->ui_.threadView->setSourceChannel(sourceChannel); - auto overrideFlags = + auto rootOverrideFlags = std::optional(this->thread_->root()->flags); - overrideFlags->set(MessageFlag::DoNotLog); + rootOverrideFlags->set(MessageFlag::DoNotLog); - this->virtualChannel_->addMessage(this->thread_->root(), overrideFlags); + this->virtualChannel_->addMessage(this->thread_->root(), rootOverrideFlags); for (const auto &msgRef : this->thread_->replies()) { if (auto msg = msgRef.lock()) diff --git a/src/widgets/dialogs/UserInfoPopup.cpp b/src/widgets/dialogs/UserInfoPopup.cpp index e0f1e57f138..5bf44c5e99f 100644 --- a/src/widgets/dialogs/UserInfoPopup.cpp +++ b/src/widgets/dialogs/UserInfoPopup.cpp @@ -992,43 +992,11 @@ UserInfoPopup::TimeoutWidget::TimeoutWidget() .setLayoutType() .withoutMargin(); - QColor color1(255, 255, 255, 80); - QColor color2(255, 255, 255, 0); - int buttonWidth = 40; - // int buttonWidth = 24; - int buttonWidth2 = 32; int buttonHeight = 32; layout->setSpacing(16); - //auto addButton = [&](Action action, const QString &text, - // const QPixmap &pixmap) { - // auto vbox = layout.emplace().withoutMargin(); - // { - // auto title = vbox.emplace().withoutMargin(); - // title->addStretch(1); - // auto label = title.emplace