glcpp: Don't look for backslashes before the beginning of the string.
authorKenneth Graunke <kenneth@whitecape.org>
Fri, 30 Jul 2010 20:24:50 +0000 (13:24 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Fri, 30 Jul 2010 20:26:14 +0000 (13:26 -0700)
Fixes a valgrind error.

src/glsl/glcpp/pp.c

index 1ce829a2c97111fd753b9e9d9a3ced3f67b9c7c6..7aa1a968de7a5e48b99200494e054de571353cb5 100644 (file)
@@ -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;