Fluid: fixed missing return value (#398)
...and possible devision by zero
This commit is contained in:
parent
fd8170525b
commit
a878e253ad
@ -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) {
|
||||
|
||||
@ -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 {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user