Matteo Bruni : d3dcompiler: Handle redefining an intrinsic function as a user-defined function.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Jun 19 07:19:13 CDT 2015


Module: wine
Branch: master
Commit: 10fcb9379e21279c88cb7f8a448b30f7af5eb2c8
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=10fcb9379e21279c88cb7f8a448b30f7af5eb2c8

Author: Matteo Bruni <mbruni at codeweavers.com>
Date:   Tue Jun 16 22:45:42 2015 +0200

d3dcompiler: Handle redefining an intrinsic function as a user-defined function.

---

 dlls/d3dcompiler_43/utils.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/dlls/d3dcompiler_43/utils.c b/dlls/d3dcompiler_43/utils.c
index 83f815f..7207399 100644
--- a/dlls/d3dcompiler_43/utils.c
+++ b/dlls/d3dcompiler_43/utils.c
@@ -2479,6 +2479,22 @@ void add_function_decl(struct wine_rb_tree *funcs, char *name, struct hlsl_ir_fu
     if (func_entry)
     {
         func = WINE_RB_ENTRY_VALUE(func_entry, struct hlsl_ir_function, entry);
+        if (intrinsic != func->intrinsic)
+        {
+            if (intrinsic)
+            {
+                ERR("Redeclaring a user defined function as an intrinsic.\n");
+                return;
+            }
+            TRACE("Function %s redeclared as a user defined function.\n", debugstr_a(name));
+            func->intrinsic = intrinsic;
+            wine_rb_destroy(&func->overloads, free_function_decl_rb, NULL);
+            if (wine_rb_init(&func->overloads, &hlsl_ir_function_decl_rb_funcs) == -1)
+            {
+                ERR("Failed to initialize function rbtree.\n");
+                return;
+            }
+        }
         decl->func = func;
         if ((old_entry = wine_rb_get(&func->overloads, decl->parameters)))
         {




More information about the wine-cvs mailing list