Mesa (glsl2): glcpp: Don' t look for backslashes before the beginning of the string.

Kenneth Graunke kwg at kemper.freedesktop.org
Fri Jul 30 20:23:24 UTC 2010


Module: Mesa
Branch: glsl2
Commit: 805cbf39224580fdb85b09a21be7cbc658f0ecf6
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=805cbf39224580fdb85b09a21be7cbc658f0ecf6

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Fri Jul 30 13:24:50 2010 -0700

glcpp: Don't look for backslashes before the beginning of the string.

Fixes a valgrind error.

---

 src/glsl/glcpp/pp.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/glsl/glcpp/pp.c b/src/glsl/glcpp/pp.c
index 1ce829a..7aa1a96 100644
--- a/src/glsl/glcpp/pp.c
+++ b/src/glsl/glcpp/pp.c
@@ -93,12 +93,16 @@ remove_line_continuations(glcpp_parser_t *ctx, const char *shader)
 	const char *newline;
 	while ((newline = strchr(search_start, '\n')) != NULL) {
 		const char *backslash = NULL;
+
+		/* # of characters preceding the newline. */
+		int n = newline - shader;
+
 		/* Find the preceding '\', if it exists */
-		if (newline[-1] == '\\') {
+		if (n >= 1 && newline[-1] == '\\')
 			backslash = newline - 1;
-		} else if (newline[-1] == '\r' && newline[-2] == '\\') {
+		else if (n >= 2 && newline[-1] == '\r' && newline[-2] == '\\')
 			backslash = newline - 2;
-		}
+
 		/* Double backslashes don't count (the backslash is escaped) */
 		if (backslash != NULL && backslash[-1] == '\\') {
 			backslash = NULL;




More information about the mesa-commit mailing list