[PATCH 1/5] d3dcompiler: Free the filename if we don't store it in the HLSL preproc_directive rule (Valgrind).

Henri Verbeet hverbeet at codeweavers.com
Thu Apr 30 09:46:37 CDT 2015


---
 dlls/d3dcompiler_43/hlsl.y |   21 ++++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/dlls/d3dcompiler_43/hlsl.y b/dlls/d3dcompiler_43/hlsl.y
index f37e07e..80fe0e6 100644
--- a/dlls/d3dcompiler_43/hlsl.y
+++ b/dlls/d3dcompiler_43/hlsl.y
@@ -1097,20 +1097,23 @@ hlsl_prog:                /* empty */
 
 preproc_directive:        PRE_LINE STRING
                             {
+                                const char **new_array = NULL;
+
                                 TRACE("Updating line information to file %s, line %u\n", debugstr_a($2), $1);
                                 hlsl_ctx.line_no = $1;
                                 if (strcmp($2, hlsl_ctx.source_file))
-                                {
-                                    const char **new_array;
-
-                                    hlsl_ctx.source_file = $2;
                                     new_array = d3dcompiler_realloc(hlsl_ctx.source_files,
                                             sizeof(*hlsl_ctx.source_files) * hlsl_ctx.source_files_count + 1);
-                                    if (new_array)
-                                    {
-                                        hlsl_ctx.source_files = new_array;
-                                        hlsl_ctx.source_files[hlsl_ctx.source_files_count++] = $2;
-                                    }
+
+                                if (new_array)
+                                {
+                                    hlsl_ctx.source_files = new_array;
+                                    hlsl_ctx.source_files[hlsl_ctx.source_files_count++] = $2;
+                                    hlsl_ctx.source_file = $2;
+                                }
+                                else
+                                {
+                                    d3dcompiler_free($2);
                                 }
                             }
 
-- 
1.7.10.4




More information about the wine-patches mailing list