Module: vkd3d Branch: master Commit: 250a24bd3fba3eb28a6be9fe8ca35900e8336405 URL: https://gitlab.winehq.org/wine/vkd3d/-/commit/250a24bd3fba3eb28a6be9fe8ca359...
Author: Zebediah Figura zfigura@codeweavers.com Date: Sat Jul 29 18:32:04 2023 -0500
vkd3d-shader/preproc: Strip whitespace when stringifying.
---
libs/vkd3d-shader/preproc.l | 11 ++++++++++- tests/hlsl_d3d12.c | 6 ++++++ 2 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/libs/vkd3d-shader/preproc.l b/libs/vkd3d-shader/preproc.l index 5e8ed2eb..728d6184 100644 --- a/libs/vkd3d-shader/preproc.l +++ b/libs/vkd3d-shader/preproc.l @@ -358,7 +358,16 @@ static void preproc_stringify(struct preproc_ctx *ctx, struct vkd3d_string_buffe vkd3d_string_buffer_printf(buffer, """); if ((expansion = find_arg_expansion(ctx, p))) { - for (i = 0; i < expansion->text.content_size; ++i) + size_t len = expansion->text.content_size; + size_t start = 0; + + while (len && strchr(" \t\r\n", expansion->text.buffer[len - 1])) + --len; + + while (start < len && strchr(" \t\r\n", expansion->text.buffer[start])) + ++start; + + for (i = start; i < len; ++i) { char c = expansion->text.buffer[i];
diff --git a/tests/hlsl_d3d12.c b/tests/hlsl_d3d12.c index ef41235e..ff29f1f7 100644 --- a/tests/hlsl_d3d12.c +++ b/tests/hlsl_d3d12.c @@ -193,6 +193,12 @@ static void test_preprocess(void)
""apple"", }, + { + "#define KEY(a) #a\n" + "KEY( \t\r\n apple \t\r\n )", + + ""apple"", + }, { "#define KEY(if) #if\n" "KEY(apple)",