mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-03-17 10:20:33 +01:00
glsl/glcpp: Fix preprocessor error condition for macro redefinition
This patch specifically fixes redefinition condition for white space changes. #define and #undef functionality in GLSL follows the standard for C++ preprocessors for macro definitions. From https://gcc.gnu.org/onlinedocs/cpp/Undefining-and-Redefining-Macros.html: These definitions are effectively the same: #define FOUR (2 + 2) #define FOUR (2 + 2) #define FOUR (2 /* two */ + 2) but these are not: #define FOUR (2 + 2) #define FOUR ( 2+2 ) #define FOUR (2 * 2) #define FOUR(score,and,seven,years,ago) (2 + 2) Fixes Khronos GLES3 CTS tests; invalid_object_whitespace_vertex invalid_object_whitespace_fragment Signed-off-by: Anuj Phogat <anuj.phogat@gmail.com> Reviewed-by: Carl Worth <cworth@cworth.org>
This commit is contained in:
parent
1a46dd6edd
commit
a6e9cd14ca
1 changed files with 10 additions and 8 deletions
|
|
@ -939,14 +939,16 @@ _token_list_equal_ignoring_space (token_list_t *a, token_list_t *b)
|
|||
|
||||
if (node_a == NULL || node_b == NULL)
|
||||
return 0;
|
||||
|
||||
if (node_a->token->type == SPACE) {
|
||||
node_a = node_a->next;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (node_b->token->type == SPACE) {
|
||||
node_b = node_b->next;
|
||||
/* Make sure whitespace appears in the same places in both.
|
||||
* It need not be exactly the same amount of whitespace,
|
||||
* though.
|
||||
*/
|
||||
if (node_a->token->type == SPACE
|
||||
&& node_b->token->type == SPACE) {
|
||||
while (node_a->token->type == SPACE)
|
||||
node_a = node_a->next;
|
||||
while (node_b->token->type == SPACE)
|
||||
node_b = node_b->next;
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue