summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCarl Worth <[email protected]>2013-06-03 11:35:43 -0700
committerCarl Worth <[email protected]>2013-06-03 13:33:31 -0700
commitd8eeb1d330c52aad734cc553e41b457e6727275c (patch)
tree625c48ea494d8d2996531558c59775a962d9e394
parent7a9f4d3e7114ca709658a620644ad897bdda41e7 (diff)
glcpp: Fix post-decrement underflow in loop-control variable
This loop-control condition with a post-decrement operator would lead to an underflow of collapsed_newlines. This in turn would cause a subsequent execution of the loop to labor inordinately trying to return the loop-control variable to a value of 0 again. Fix this by dis-intertwining the test and the decrement. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=65112 Reviewed-by: Kenneth Graunke <[email protected]>
-rw-r--r--src/glsl/glcpp/pp.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/glsl/glcpp/pp.c b/src/glsl/glcpp/pp.c
index 789f7f94191..7e1b6c68966 100644
--- a/src/glsl/glcpp/pp.c
+++ b/src/glsl/glcpp/pp.c
@@ -97,8 +97,10 @@ remove_line_continuations(glcpp_parser_t *ctx, const char *shader)
{
ralloc_strncat(&clean, shader,
newline - shader + 1);
- while (collapsed_newlines--)
+ while (collapsed_newlines) {
ralloc_strcat(&clean, "\n");
+ collapsed_newlines--;
+ }
shader = newline + 1;
search_start = shader;
}