glcpp: Don't use alternation in the lookahead for empty pragmas.
authorCarl Worth <cworth@cworth.org>
Mon, 18 Aug 2014 18:36:12 +0000 (11:36 -0700)
committerCarl Worth <cworth@cworth.org>
Fri, 22 Aug 2014 22:14:59 +0000 (15:14 -0700)
commit23163df24cf96107ee8ccb372db20f49e9d88948
treeaa3d2942a5db222bbc20a19c6a37bf3e15b4e515
parent97d03b9366bfa55b27feb92aa5afacd9c5f6f421
glcpp: Don't use alternation in the lookahead for empty pragmas.

We've found that there's a buffer overrun bug in flex that's triggered by
using alternation in a lookahead pattern.

Fortunately, we don't need to match the exact {NEWLINE} expression to
detect an empty pragma. It suffices to verify that there are no non-space
characters before any newline character. So we can use a simple [\r\n] to
get the desired behavior while avoiding the flex bug.

Fixes the regression of piglit's 17000-consecutive-chars-identifier test,
(which has been crashing since commit
04e40fd337a244ee77ef9553985e9398ff0344af ).

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=82472
Signed-off-by: Carl Worth <cworth@cworth.org>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
CC: <mesa-stable@lists.freedesktop.org>
src/glsl/glcpp/glcpp-lex.l