summaryrefslogtreecommitdiff
path: root/GLESv2/yagl_glsl_state.c
diff options
context:
space:
mode:
Diffstat (limited to 'GLESv2/yagl_glsl_state.c')
-rw-r--r--GLESv2/yagl_glsl_state.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/GLESv2/yagl_glsl_state.c b/GLESv2/yagl_glsl_state.c
index 72149ab..a60785d 100644
--- a/GLESv2/yagl_glsl_state.c
+++ b/GLESv2/yagl_glsl_state.c
@@ -728,6 +728,7 @@ static int yagl_glsl_state_pp_solve_binary(struct yagl_glsl_state *state,
{
char *tmp = NULL;
int a = 0, b = 0;
+ YAGL_LOG_FUNC_SET(yagl_glsl_state_pp_solve_binary);
assert(result != NULL);
@@ -753,6 +754,13 @@ static int yagl_glsl_state_pp_solve_binary(struct yagl_glsl_state *state,
b = tok_b.value;
}
+ if ((op == yagl_glsl_pp_op_mod) || (op == yagl_glsl_pp_op_div)) {
+ if (b == 0) {
+ YAGL_LOG_ERROR("Expression parse error - evaluated to division by zero");
+ return 0;
+ }
+ }
+
switch (op) {
case yagl_glsl_pp_op_or: *result = (a || b); break;
case yagl_glsl_pp_op_and: *result = (a && b); break;