Zebediah Figura : vkd3d-shader: Factor out make_empty_list().

Alexandre Julliard julliard at winehq.org
Tue Mar 2 15:31:17 CST 2021


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

Author: Zebediah Figura <zfigura at codeweavers.com>
Date:   Sat Feb 27 18:03:12 2021 -0600

vkd3d-shader: Factor out make_empty_list().

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

---

 libs/vkd3d-shader/hlsl.y | 55 +++++++++++++++++++++++++-----------------------
 1 file changed, 29 insertions(+), 26 deletions(-)

diff --git a/libs/vkd3d-shader/hlsl.y b/libs/vkd3d-shader/hlsl.y
index dd15f62..5ad50b0 100644
--- a/libs/vkd3d-shader/hlsl.y
+++ b/libs/vkd3d-shader/hlsl.y
@@ -121,6 +121,15 @@ static struct hlsl_ir_node *node_from_list(struct list *list)
     return LIST_ENTRY(list_tail(list), struct hlsl_ir_node, entry);
 }
 
+static struct list *make_empty_list(void)
+{
+    struct list *list;
+
+    if ((list = vkd3d_malloc(sizeof(*list))))
+        list_init(list);
+    return list;
+}
+
 static void check_invalid_matrix_modifiers(struct hlsl_ctx *ctx, DWORD modifiers, struct vkd3d_shader_location loc)
 {
     if (modifiers & HLSL_MODIFIERS_MAJORITY_MASK)
@@ -390,9 +399,8 @@ static struct list *create_loop(enum loop_type type, struct list *init, struct l
     struct hlsl_ir_loop *loop = NULL;
     struct hlsl_ir_if *cond_jump = NULL;
 
-    if (!(list = vkd3d_malloc(sizeof(*list))))
+    if (!(list = make_empty_list()))
         goto oom;
-    list_init(list);
 
     if (init)
         list_move_head(list, init);
@@ -724,9 +732,8 @@ static struct list *gen_struct_fields(struct hlsl_ctx *ctx, struct hlsl_type *ty
     if (type->type == HLSL_CLASS_MATRIX)
         assert(type->modifiers & HLSL_MODIFIERS_MAJORITY_MASK);
 
-    if (!(list = vkd3d_malloc(sizeof(*list))))
+    if (!(list = make_empty_list()))
         return NULL;
-    list_init(list);
     LIST_FOR_EACH_ENTRY_SAFE(v, v_next, fields, struct parse_variable_def, entry)
     {
         if (!(field = vkd3d_calloc(1, sizeof(*field))))
@@ -892,12 +899,11 @@ static struct list *make_list(struct hlsl_ir_node *node)
 {
     struct list *list;
 
-    if (!(list = vkd3d_malloc(sizeof(*list))))
+    if (!(list = make_empty_list()))
     {
         hlsl_free_instr(node);
         return NULL;
     }
-    list_init(list);
     list_add_tail(list, &node->entry);
     return list;
 }
@@ -1377,14 +1383,13 @@ static struct list *declare_vars(struct hlsl_ctx *ctx, struct hlsl_type *basic_t
     if (basic_type->type == HLSL_CLASS_MATRIX)
         assert(basic_type->modifiers & HLSL_MODIFIERS_MAJORITY_MASK);
 
-    if (!(statements_list = vkd3d_malloc(sizeof(*statements_list))))
+    if (!(statements_list = make_empty_list()))
     {
         LIST_FOR_EACH_ENTRY_SAFE(v, v_next, var_list, struct parse_variable_def, entry)
             free_parse_variable_def(v);
         vkd3d_free(var_list);
         return NULL;
     }
-    list_init(statements_list);
 
     if (!var_list)
         return statements_list;
@@ -1836,8 +1841,8 @@ any_identifier:
 fields_list:
       /* empty */
         {
-            $$ = vkd3d_malloc(sizeof(*$$));
-            list_init($$);
+            if (!($$ = make_empty_list()))
+                YYABORT;
         }
     | fields_list field
         {
@@ -1921,8 +1926,8 @@ func_prototype:
 compound_statement:
       '{' '}'
         {
-            $$ = vkd3d_malloc(sizeof(*$$));
-            list_init($$);
+            if (!($$ = make_empty_list()))
+                YYABORT;
         }
     | '{' scope_start statement_list '}'
         {
@@ -1982,8 +1987,8 @@ register_opt:
 parameters:
       scope_start
         {
-            $$ = vkd3d_malloc(sizeof(*$$));
-            list_init($$);
+            if (!($$ = make_empty_list()))
+                YYABORT;
         }
     | scope_start param_list
         {
@@ -1993,8 +1998,8 @@ parameters:
 param_list:
       parameter
         {
-            $$ = vkd3d_malloc(sizeof(*$$));
-            list_init($$);
+            if (!($$ = make_empty_list()))
+                YYABORT;
             if (!add_func_parameter(ctx, $$, &$1, @1))
             {
                 ERR("Error adding function parameter %s.\n", $1.name);
@@ -2148,9 +2153,8 @@ declaration_statement:
     | struct_declaration
     | typedef
         {
-            if (!($$ = vkd3d_malloc(sizeof(*$$))))
+            if (!($$ = make_empty_list()))
                 YYABORT;
-            list_init($$);
         }
 
 typedef_type:
@@ -2177,8 +2181,8 @@ typedef:
 type_specs:
       type_spec
         {
-            $$ = vkd3d_malloc(sizeof(*$$));
-            list_init($$);
+            if (!($$ = make_empty_list()))
+                YYABORT;
             list_add_head($$, &$1->entry);
         }
     | type_specs ',' type_spec
@@ -2217,8 +2221,8 @@ variables_def_optional:
 variables_def:
       variable_def
         {
-            $$ = vkd3d_malloc(sizeof(*$$));
-            list_init($$);
+            if (!($$ = make_empty_list()))
+                YYABORT;
             list_add_head($$, &$1->entry);
         }
     | variables_def ',' variable_def
@@ -2401,9 +2405,8 @@ jump_statement:
         }
     | KW_RETURN ';'
         {
-            if (!($$ = vkd3d_malloc(sizeof(*$$))))
+            if (!($$ = make_empty_list()))
                 YYABORT;
-            list_init($$);
             if (!add_return(ctx, $$, NULL, @1))
                 YYABORT;
         }
@@ -2462,8 +2465,8 @@ loop_statement:
 expr_statement:
       ';'
         {
-            $$ = vkd3d_malloc(sizeof(*$$));
-            list_init($$);
+            if (!($$ = make_empty_list()))
+                YYABORT;
         }
     | expr ';'
         {




More information about the wine-cvs mailing list