summaryrefslogtreecommitdiff
path: root/src/Fl_Screen_Driver.cxx
diff options
context:
space:
mode:
authorAlbrecht Schlosser <albrechts.fltk@online.de>2020-02-11 15:46:46 +0100
committerAlbrecht Schlosser <albrechts.fltk@online.de>2020-02-11 15:46:46 +0100
commit8ea4b5b5b10e5b68a79ab651820dcbc4c4d88207 (patch)
treedece548fc7e8040602fe54e54a10f00d97b7f10d /src/Fl_Screen_Driver.cxx
parent924289a40c2f112772e0b44325ba2297b2e07a35 (diff)
Fix static analyzer errors and warnings
Fix several bugs found by scan-build (more to come). https://clang-analyzer.llvm.org/scan-build.html See also current travis-ci build log with static analyzer, e.g. https://travis-ci.com/fltk/fltk/jobs/285426415 (link may become invalid in the future).
Diffstat (limited to 'src/Fl_Screen_Driver.cxx')
-rw-r--r--src/Fl_Screen_Driver.cxx14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/Fl_Screen_Driver.cxx b/src/Fl_Screen_Driver.cxx
index 092570521..a4a4cfcc5 100644
--- a/src/Fl_Screen_Driver.cxx
+++ b/src/Fl_Screen_Driver.cxx
@@ -308,15 +308,21 @@ void Fl_Screen_Driver::rescale_all_windows_from_screen(int screen, float f)
int i = 0, count = 0; // count top-level windows, except transient scale-displaying window
Fl_Window *win = Fl::first_window();
while (win) {
- if (!win->parent() && (Fl_Window_Driver::driver(win)->screen_num() == screen || rescalable() == SYSTEMWIDE_APP_SCALING) &&
- win->user_data() != &Fl_Screen_Driver::transient_scale_display) count++;
+ if (!win->parent() &&
+ (Fl_Window_Driver::driver(win)->screen_num() == screen || rescalable() == SYSTEMWIDE_APP_SCALING) &&
+ win->user_data() != &Fl_Screen_Driver::transient_scale_display) {
+ count++;
+ }
win = Fl::next_window(win);
}
+ if (count == 0)
+ return;
Fl_Window **win_array = new Fl_Window*[count];
win = Fl::first_window(); // memorize all top-level windows
while (win) {
- if (!win->parent() && win->user_data() != &Fl_Screen_Driver::transient_scale_display &&
- (Fl_Window_Driver::driver(win)->screen_num() == screen || rescalable() == SYSTEMWIDE_APP_SCALING) ) {
+ if (!win->parent() &&
+ (Fl_Window_Driver::driver(win)->screen_num() == screen || rescalable() == SYSTEMWIDE_APP_SCALING) &&
+ win->user_data() != &Fl_Screen_Driver::transient_scale_display) {
win_array[i++] = win;
}
win = Fl::next_window(win);