fixed segfault when screen number exceeds screen count (#2534)

This commit is contained in:
borgmanJeremy
2022-04-07 10:31:32 -05:00
committed by GitHub
parent e1b55d310f
commit 0c9a58fad0
2 changed files with 8 additions and 2 deletions

View File

@@ -132,6 +132,7 @@ CaptureWidget* Flameshot::gui(const CaptureRequest& req)
return m_captureWindow;
} else {
emit captureFailed();
return nullptr;
}
}
@@ -151,6 +152,11 @@ void Flameshot::screen(CaptureRequest req, const int screenNumber)
screen =
qApp->screens()[qApp->desktop()->screenNumber(globalCursorPos)];
#endif
} else if (screenNumber >= qApp->screens().count()) {
AbstractLogger() << QObject::tr(
"Requested screen exceeds screen count");
emit captureFailed();
return;
} else {
screen = qApp->screens()[screenNumber];
}

View File

@@ -442,7 +442,7 @@ int main(int argc, char* argv[])
QString numberStr = parser.value(screenNumberOption);
// Option values
int number =
int screenNumber =
numberStr.startsWith(QLatin1String("-")) ? -1 : numberStr.toInt();
QString path = parser.value(pathOption);
if (!path.isEmpty()) {
@@ -455,7 +455,7 @@ int main(int argc, char* argv[])
bool pin = parser.isSet(pinOption);
bool upload = parser.isSet(uploadOption);
CaptureRequest req(CaptureRequest::SCREEN_MODE, delay, number);
CaptureRequest req(CaptureRequest::SCREEN_MODE, delay, screenNumber);
if (!region.isEmpty()) {
if (region.startsWith("screen")) {
// TODO use abstract logger