fix: Fixed some compiler warnings (#5028)

* fix(C4101): unreferenced local variable

* fix(C4189): variable initialized but not referenced

* fix(C4305): narrowing from double to float

* fix(C4457): declaration hiding function parameter

* fix(C4456): shadowing declaration

* fix(C4996): remove deprecations

* chore: add changelog entry

* fix: Remove more unused variables

* fix: removed unused lambda captures

* Update changelog entry

---------

Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
This commit is contained in:
nerix 2023-12-16 12:24:28 +01:00 committed by GitHub
parent 434487750f
commit 66f4480371
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
27 changed files with 75 additions and 130 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -3,6 +3,7 @@
#include "common/QLogging.hpp"
#include "util/TypeName.hpp"
#include <QtGlobal>
#include <QVariant>
namespace chatterino {
@ -10,16 +11,8 @@ namespace chatterino {
namespace {
template <typename T>
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<decltype(defaultValue)>()));
@ -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<QString> 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"))

View file

@ -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(),

View file

@ -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<MessagePtr> snapshot =
getApp()->twitch->liveChannel->getMessageSnapshot();

View file

@ -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

View file

@ -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;

View file

@ -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;
});

View file

@ -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();

View file

@ -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(

View file

@ -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;

View file

@ -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(

View file

@ -3,7 +3,7 @@
#ifdef USEWINSDK
# include <Windows.h>
# include <iostream>
# include <tuple>
#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
}

View file

@ -118,7 +118,7 @@ float BaseWindow::scale() const
float BaseWindow::qtFontScale() const
{
return this->scale() / std::max<float>(0.01, this->nativeScale_);
return this->scale() / std::max<float>(0.01F, this->nativeScale_);
}
void BaseWindow::init()

View file

@ -95,11 +95,13 @@ void Label::paintEvent(QPaintEvent *)
QFontMetrics metrics = getFonts()->getFontMetrics(
this->getFontStyle(),
this->scale() * 96.f /
std::max<float>(0.01, this->logicalDpiX() * deviceDpi));
std::max<float>(
0.01F, static_cast<float>(this->logicalDpiX() * deviceDpi)));
painter.setFont(getFonts()->getFont(
this->getFontStyle(),
this->scale() * 96.f /
std::max<float>(0.02, this->logicalDpiX() * deviceDpi)));
std::max<float>(
0.02F, static_cast<float>(this->logicalDpiX() * deviceDpi))));
int offset = this->getOffset();

View file

@ -238,11 +238,11 @@ void ReplyThreadPopup::addMessagesFromThread()
this->ui_.threadView->setChannel(this->virtualChannel_);
this->ui_.threadView->setSourceChannel(sourceChannel);
auto overrideFlags =
auto rootOverrideFlags =
std::optional<MessageFlags>(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())

View file

@ -992,43 +992,11 @@ UserInfoPopup::TimeoutWidget::TimeoutWidget()
.setLayoutType<QHBoxLayout>()
.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<QVBoxLayout>().withoutMargin();
// {
// auto title = vbox.emplace<QHBoxLayout>().withoutMargin();
// title->addStretch(1);
// auto label = title.emplace<Label>(text);
// label->setHasOffset(false);
// label->setStyleSheet("color: #BBB");
// title->addStretch(1);
// auto hbox = vbox.emplace<QHBoxLayout>().withoutMargin();
// hbox->setSpacing(0);
// {
// auto button = hbox.emplace<Button>(nullptr);
// button->setPixmap(pixmap);
// button->setScaleIndependantSize(buttonHeight, buttonHeight);
// button->setBorderColor(QColor(255, 255, 255, 127));
// QObject::connect(
// button.getElement(), &Button::leftClicked, [this, action] {
// this->buttonClicked.invoke(std::make_pair(action, -1));
// });
// }
// }
//};
const auto addLayout = [&](const QString &text) {
auto vbox = layout.emplace<QVBoxLayout>().withoutMargin();
auto title = vbox.emplace<QHBoxLayout>().withoutMargin();

View file

@ -2888,12 +2888,14 @@ void ChannelView::setInputReply(const MessagePtr &message)
if (!message->replyThread)
{
// Message did not already have a thread attached, try to find or create one
if (auto *tc =
dynamic_cast<TwitchChannel *>(this->underlyingChannel_.get()))
auto *tc =
dynamic_cast<TwitchChannel *>(this->underlyingChannel_.get());
if (!tc)
{
tc->getOrCreateThread(message);
tc = dynamic_cast<TwitchChannel *>(this->channel_.get());
}
else if (auto *tc = dynamic_cast<TwitchChannel *>(this->channel_.get()))
if (tc)
{
tc->getOrCreateThread(message);
}

View file

@ -424,7 +424,6 @@ void NotebookTab::paintEvent(QPaintEvent *)
// select the right tab colors
Theme::TabColors colors;
Theme::TabColors regular = this->theme->tabs.regular;
if (this->selected_)
colors = this->theme->tabs.selected;

View file

@ -161,7 +161,6 @@ void GenericListView::refreshTheme(const Theme &theme)
bool GenericListView::acceptCompletion()
{
const QModelIndex &curIdx = this->currentIndex();
const int curRow = curIdx.row();
const int count = this->model_->rowCount(curIdx);
if (count <= 0)
{

View file

@ -256,9 +256,9 @@ public:
{
auto *combo = this->addDropdown(text, {}, std::move(toolTipText));
for (const auto &text : items)
for (const auto &item : items)
{
combo->addItem(QString::fromStdString(std::string(text)));
combo->addItem(QString::fromStdString(std::string(item)));
}
if (!defaultValueText.isEmpty())

View file

@ -34,8 +34,7 @@ void tableCellClicked(const QModelIndex &clicked, EditableModelView *view,
if (wasAccepted)
{
auto newHotkey = dialog.data();
auto vectorIndex =
getApp()->hotkeys->replaceHotkey(hotkey->name(), newHotkey);
getApp()->hotkeys->replaceHotkey(hotkey->name(), newHotkey);
getApp()->hotkeys->save();
}
}
@ -69,7 +68,7 @@ KeyboardSettingsPage::KeyboardSettingsPage()
if (wasAccepted)
{
auto newHotkey = dialog.data();
int vectorIndex = getApp()->hotkeys->hotkeys_.append(newHotkey);
getApp()->hotkeys->hotkeys_.append(newHotkey);
getApp()->hotkeys->save();
}
});

View file

@ -21,36 +21,40 @@ bool filterItemsRec(QObject *object, const QString &query)
widget->update();
};
if (auto x = dynamic_cast<SCheckBox *>(child); x)
if (auto *checkBox = dynamic_cast<SCheckBox *>(child))
{
setOpacity(x, x->text().contains(query, Qt::CaseInsensitive));
setOpacity(checkBox,
checkBox->text().contains(query, Qt::CaseInsensitive));
}
else if (auto x = dynamic_cast<SLabel *>(child); x)
else if (auto *lbl = dynamic_cast<SLabel *>(child))
{
setOpacity(x, x->text().contains(query, Qt::CaseInsensitive));
setOpacity(lbl, lbl->text().contains(query, Qt::CaseInsensitive));
}
else if (auto x = dynamic_cast<SComboBox *>(child); x)
else if (auto *comboBox = dynamic_cast<SComboBox *>(child))
{
setOpacity(x, [=]() {
for (int i = 0; i < x->count(); i++)
setOpacity(comboBox, [=]() {
for (int i = 0; i < comboBox->count(); i++)
{
if (x->itemText(i).contains(query, Qt::CaseInsensitive))
if (comboBox->itemText(i).contains(query,
Qt::CaseInsensitive))
{
return true;
}
}
return false;
}());
}
else if (auto x = dynamic_cast<QTabWidget *>(child); x)
else if (auto *tabs = dynamic_cast<QTabWidget *>(child))
{
for (int i = 0; i < x->count(); i++)
for (int i = 0; i < tabs->count(); i++)
{
bool tabAny{};
if (x->tabText(i).contains(query, Qt::CaseInsensitive))
if (tabs->tabText(i).contains(query, Qt::CaseInsensitive))
{
tabAny = true;
}
auto widget = x->widget(i);
auto *widget = tabs->widget(i);
tabAny |= filterItemsRec(widget, query);
any |= tabAny;

View file

@ -27,7 +27,7 @@
{ \
QPainter painter(this); \
QColor color = QColor("#222222"); \
color.setAlphaF(0.7); \
color.setAlphaF(0.7F); \
painter.fillRect(this->rect(), color); \
} \
} \

View file

@ -842,12 +842,12 @@ void SplitContainer::applyFromDescriptorRecursively(
{
if (std::holds_alternative<SplitNodeDescriptor>(item))
{
const auto *n = std::get_if<SplitNodeDescriptor>(&item);
if (!n)
const auto *inner = std::get_if<SplitNodeDescriptor>(&item);
if (!inner)
{
return;
}
const auto &splitNode = *n;
const auto &splitNode = *inner;
auto *split = new Split(this);
split->setChannel(WindowManager::decodeChannel(splitNode));
split->setModerationMode(splitNode.moderationMode_);

View file

@ -947,8 +947,6 @@ void SplitHeader::enterEvent(QEvent *event)
{
if (!this->tooltipText_.isEmpty())
{
auto *channel = this->split_->getChannel().get();
this->tooltipWidget_->setOne({nullptr, this->tooltipText_});
this->tooltipWidget_->setWordWrap(true);
this->tooltipWidget_->adjustSize();