summaryrefslogtreecommitdiff
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
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).
-rw-r--r--fluid/Fl_Function_Type.cxx2
-rw-r--r--src/Fl_Preferences.cxx2
-rw-r--r--src/Fl_Screen_Driver.cxx14
-rw-r--r--src/Fl_Tabs.cxx9
4 files changed, 17 insertions, 10 deletions
diff --git a/fluid/Fl_Function_Type.cxx b/fluid/Fl_Function_Type.cxx
index 5d002796d..594a526a9 100644
--- a/fluid/Fl_Function_Type.cxx
+++ b/fluid/Fl_Function_Type.cxx
@@ -394,7 +394,7 @@ void Fl_Function_Type::write_code1() {
}
}
- if (havewidgets && !child->name()) write_c(" %s* w;\n", subclassname(child));
+ if (havewidgets && child && !child->name()) write_c(" %s* w;\n", subclassname(child));
indentation += 2;
}
diff --git a/src/Fl_Preferences.cxx b/src/Fl_Preferences.cxx
index a9b4464bf..31ea72ea5 100644
--- a/src/Fl_Preferences.cxx
+++ b/src/Fl_Preferences.cxx
@@ -1476,7 +1476,7 @@ void Fl_Preferences::Node::createIndex() {
int n = nChildren();
if (n>NIndex_) {
NIndex_ = n + 16;
- index_ = (Node**)realloc(index_, NIndex_*sizeof(Node**));
+ index_ = (Node**)realloc(index_, NIndex_*sizeof(Node*));
}
Node *nd;
int i = 0;
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);
diff --git a/src/Fl_Tabs.cxx b/src/Fl_Tabs.cxx
index 4cfb13401..be5ed24f9 100644
--- a/src/Fl_Tabs.cxx
+++ b/src/Fl_Tabs.cxx
@@ -204,17 +204,18 @@ int Fl_Tabs::handle(int event) {
return 1;
case FL_MOVE: {
int ret = Fl_Group::handle(event);
- Fl_Widget *tooltip_widget = Fl_Tooltip::current(), *n = tooltip_widget;
+ Fl_Widget *tooltip_widget = Fl_Tooltip::current();
+ Fl_Widget *n; // initialized later
int H = tab_height();
- if ( (H>=0) && (Fl::event_y()>y()+H) )
+ if ( (H >= 0) && (Fl::event_y() > y()+H) )
return ret;
- else if ( (H<0) && (Fl::event_y() < y()+h()+H) )
+ else if ( (H < 0) && (Fl::event_y() < y()+h()+H) )
return ret;
else {
n = which(Fl::event_x(), Fl::event_y());
if (!n) n = this;
}
- if (n!=tooltip_widget)
+ if (n != tooltip_widget)
Fl_Tooltip::enter(n);
return ret; }
case FL_FOCUS: