Fluid: fixed missing return value (#398)

...and possible devision by zero
This commit is contained in:
Matthias Melcher 2022-02-20 21:15:58 +01:00 committed by GitHub
parent fd8170525b
commit a878e253ad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 1 deletions

View File

@ -513,24 +513,28 @@ static int vars_x_cb(const Fluid_Coord_Input*, void *v) {
Fl_Type *t = (Fl_Type*)v;
if (t->is_widget())
return ((Fl_Widget_Type*)t)->o->x();
return 0;
}
static int vars_y_cb(const Fluid_Coord_Input*, void *v) {
Fl_Type *t = (Fl_Type*)v;
if (t->is_widget())
return ((Fl_Widget_Type*)t)->o->y();
return 0;
}
static int vars_w_cb(const Fluid_Coord_Input*, void *v) {
Fl_Type *t = (Fl_Type*)v;
if (t->is_widget())
return ((Fl_Widget_Type*)t)->o->w();
return 0;
}
static int vars_h_cb(const Fluid_Coord_Input*, void *v) {
Fl_Type *t = (Fl_Type*)v;
if (t->is_widget())
return ((Fl_Widget_Type*)t)->o->h();
return 0;
}
static int vars_px_cb(const Fluid_Coord_Input*, void *v) {

View File

@ -272,7 +272,11 @@ int Fluid_Coord_Input::eval(uchar *&s, int prio) const {
} else if (c=='*' || c=='/') {
if (prio<=3) { s--; return v; }
if (c=='*') { v *= eval(s, 3); }
else if (c=='/') { v /= eval(s, 3); }
else if (c=='/') {
int x = eval(s, 3);
if (x!=0) // if x is zero, don't divide
v /= x;
}
} else if (c==')') {
return v;
} else {