mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 04:38:03 +02: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)
|
if (node_a == NULL || node_b == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
|
/* Make sure whitespace appears in the same places in both.
|
||||||
if (node_a->token->type == SPACE) {
|
* It need not be exactly the same amount of whitespace,
|
||||||
node_a = node_a->next;
|
* though.
|
||||||
continue;
|
*/
|
||||||
}
|
if (node_a->token->type == SPACE
|
||||||
|
&& node_b->token->type == SPACE) {
|
||||||
if (node_b->token->type == SPACE) {
|
while (node_a->token->type == SPACE)
|
||||||
node_b = node_b->next;
|
node_a = node_a->next;
|
||||||
|
while (node_b->token->type == SPACE)
|
||||||
|
node_b = node_b->next;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue