Zebediah Figura : vkd3d-shader: Correctly dump array types.

Alexandre Julliard julliard at winehq.org
Fri Feb 19 16:42:49 CST 2021


Module: vkd3d
Branch: master
Commit: 60f7735b202ffc9c5a188db7d53b8c659ad0ea5a
URL:    https://source.winehq.org/git/vkd3d.git/?a=commit;h=60f7735b202ffc9c5a188db7d53b8c659ad0ea5a

Author: Zebediah Figura <zfigura at codeweavers.com>
Date:   Tue Feb 16 23:52:04 2021 -0600

vkd3d-shader: Correctly dump array types.

Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 libs/vkd3d-shader/hlsl.c | 23 ++++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)

diff --git a/libs/vkd3d-shader/hlsl.c b/libs/vkd3d-shader/hlsl.c
index f181439..342fe6a 100644
--- a/libs/vkd3d-shader/hlsl.c
+++ b/libs/vkd3d-shader/hlsl.c
@@ -693,10 +693,27 @@ char *hlsl_type_to_string(const struct hlsl_type *type)
             return string;
 
         case HLSL_CLASS_ARRAY:
-            name = hlsl_base_type_to_string(type->e.array.type);
-            if ((string = malloc(strlen(name) + 15)))
-                sprintf(string, "%s[%u]", name, type->e.array.elements_count);
+        {
+            const struct hlsl_type *t;
+            char *inner_string;
+            size_t len = 1;
+
+            for (t = type; t->type == HLSL_CLASS_ARRAY; t = t->e.array.type)
+                len += 14;
+            if (!(inner_string = hlsl_type_to_string(t)))
+                return NULL;
+            len += strlen(inner_string);
+
+            if ((string = malloc(len)))
+            {
+                strcpy(string, inner_string);
+                for (t = type; t->type == HLSL_CLASS_ARRAY; t = t->e.array.type)
+                    sprintf(string + strlen(string), "[%u]", t->e.array.elements_count);
+            }
+
+            vkd3d_free(inner_string);
             return string;
+        }
 
         case HLSL_CLASS_STRUCT:
             return vkd3d_strdup("<anonymous struct>");




More information about the wine-cvs mailing list