From: Zebediah Figura zfigura@codeweavers.com
--- 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 5e8ed2eb1..728d61840 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 ef41235e3..ff29f1f73 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)",