[2/2] d3dcompiler: Fix error messages generation. (try 2)
Matteo Bruni
matteo.mystral at gmail.com
Thu May 5 06:37:55 CDT 2011
-------------- next part --------------
From a57259cb31eeaebce1bb3a4b5586b00db8f81aa0 Mon Sep 17 00:00:00 2001
From: Matteo Bruni <mbruni at codeweavers.com>
Date: Wed, 20 Apr 2011 18:21:27 +0200
Subject: d3dcompiler: Fix error messages generation.
---
dlls/d3dcompiler_43/compiler.c | 24 +++++++++---------------
1 files changed, 9 insertions(+), 15 deletions(-)
diff --git a/dlls/d3dcompiler_43/compiler.c b/dlls/d3dcompiler_43/compiler.c
index d925f95..13de0f9 100644
--- a/dlls/d3dcompiler_43/compiler.c
+++ b/dlls/d3dcompiler_43/compiler.c
@@ -390,7 +390,7 @@ cleanup:
return hr;
}
-static HRESULT assemble_shader(const char *preproc_shader, const char *preproc_messages,
+static HRESULT assemble_shader(const char *preproc_shader,
ID3DBlob **shader_blob, ID3DBlob **error_messages)
{
struct bwriter_shader *shader;
@@ -403,24 +403,18 @@ static HRESULT assemble_shader(const char *preproc_shader, const char *preproc_m
shader = SlAssembleShader(preproc_shader, &messages);
- if (messages || preproc_messages)
+ if (messages)
{
- if (preproc_messages)
- {
- TRACE("Preprocessor messages:\n");
- TRACE("%s", preproc_messages);
- }
- if (messages)
- {
- TRACE("Assembler messages:\n");
- TRACE("%s", messages);
- }
+ TRACE("Assembler messages:\n");
+ TRACE("%s", messages);
TRACE("Shader source:\n");
TRACE("%s\n", debugstr_a(preproc_shader));
if (error_messages)
{
+ const char *preproc_messages = *error_messages ? ID3D10Blob_GetBufferPointer(*error_messages) : NULL;
+
size = (messages ? strlen(messages) : 0) +
(preproc_messages ? strlen(preproc_messages) : 0) + 1;
hr = D3DCreateBlob(size, &buffer);
@@ -436,9 +430,9 @@ static HRESULT assemble_shader(const char *preproc_shader, const char *preproc_m
CopyMemory(pos, preproc_messages, strlen(preproc_messages) + 1);
pos += strlen(preproc_messages);
}
- if (messages)
- CopyMemory(pos, messages, strlen(messages) + 1);
+ CopyMemory(pos, messages, strlen(messages) + 1);
+ if (*error_messages) ID3D10Blob_Release(*error_messages);
*error_messages = buffer;
}
HeapFree(GetProcessHeap(), 0, messages);
@@ -492,7 +486,7 @@ HRESULT WINAPI D3DAssemble(const void *data, SIZE_T datasize, const char *filena
hr = preprocess_shader(data, datasize, defines, include, error_messages);
if (SUCCEEDED(hr))
- hr = assemble_shader(wpp_output, wpp_messages, shader, error_messages);
+ hr = assemble_shader(wpp_output, shader, error_messages);
HeapFree(GetProcessHeap(), 0, wpp_output);
LeaveCriticalSection(&wpp_mutex);
--
1.7.3.4
More information about the wine-patches
mailing list