mirror of
https://github.com/reactos/reactos.git
synced 2024-09-06 19:02:32 +00:00
47 lines
1.7 KiB
Diff
47 lines
1.7 KiB
Diff
![]() |
diff --git a/dll/directx/wine/d3dx9_36/shader.c b/dll/directx/wine/d3dx9_36/shader.c
|
||
|
index 1c6acc8..3e0d922 100644
|
||
|
--- a/dll/directx/wine/d3dx9_36/shader.c
|
||
|
+++ b/dll/directx/wine/d3dx9_36/shader.c
|
||
|
@@ -441,6 +441,41 @@ HRESULT WINAPI D3DXCompileShader(const char *data, UINT length, const D3DXMACRO
|
||
|
}
|
||
|
}
|
||
|
|
||
|
+ /* Filter out D3DCompile warning messages that are not present with D3DCompileShader */
|
||
|
+ if (SUCCEEDED(hr) && error_msgs && *error_msgs)
|
||
|
+ {
|
||
|
+ char *messages = ID3DXBuffer_GetBufferPointer(*error_msgs);
|
||
|
+ DWORD size = ID3DXBuffer_GetBufferSize(*error_msgs);
|
||
|
+
|
||
|
+ /* Ensure messages are null terminated for safe processing */
|
||
|
+ if (size) messages[size - 1] = 0;
|
||
|
+
|
||
|
+ while (size > 1)
|
||
|
+ {
|
||
|
+ char *prev, *next;
|
||
|
+
|
||
|
+ /* Warning has the form "warning X3206: ... implicit truncation of vector type"
|
||
|
+ but we only search for "X3206:" in case d3dcompiler_43 has localization */
|
||
|
+ prev = next = strstr(messages, "X3206:");
|
||
|
+ if (!prev) break;
|
||
|
+
|
||
|
+ /* get pointer to beginning and end of current line */
|
||
|
+ while (prev > messages && *(prev - 1) != '\n') prev--;
|
||
|
+ while (next < messages + size - 1 && *next != '\n') next++;
|
||
|
+ if (next < messages + size - 1 && *next == '\n') next++;
|
||
|
+
|
||
|
+ memmove(prev, next, messages + size - next);
|
||
|
+ size -= (next - prev);
|
||
|
+ }
|
||
|
+
|
||
|
+ /* Only return a buffer if the resulting string is not empty as some apps depend on that */
|
||
|
+ if (size <= 1)
|
||
|
+ {
|
||
|
+ ID3DXBuffer_Release(*error_msgs);
|
||
|
+ *error_msgs = NULL;
|
||
|
+ }
|
||
|
+ }
|
||
|
+
|
||
|
return hr;
|
||
|
}
|
||
|
|