]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
cleaning
authorRico Tzschichholz <ricotz@ubuntu.com>
Tue, 10 May 2022 15:25:39 +0000 (17:25 +0200)
committerRico Tzschichholz <ricotz@ubuntu.com>
Tue, 16 Aug 2022 07:37:04 +0000 (09:37 +0200)
codegen/valaccodearraymodule.vala
codegen/valaccodemethodcallmodule.vala
tests/basic-types/arrays.c-expected
tests/basic-types/arrays.vala

index 9f6590c3c87e555cf88a1a7f63a153a9f9afe27e..e7e0d9340c472baa8b5d41077e0e609469a6a35f 100644 (file)
@@ -388,8 +388,8 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule {
                cfile.add_include ("string.h");
                generate_type_declaration (ssize_t_type, cfile);
 
-               var null_id = new CCodeIdentifier("NULL");
-               var free_func = new CCodeIdentifier("free_func");
+               var null_id = new CCodeIdentifier ("NULL");
+               var free_func = new CCodeIdentifier ("element_destroy_func");
                var array_id = new CCodeIdentifier ("array");
                var is_pointer_id = new CCodeIdentifier ("is_pointer");
 
@@ -406,7 +406,7 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule {
                push_function (fun);
 
                var array = new CCodeCastExpression (array_id, "char*");
-               var void_array = new CCodeCastExpression(array_id, "void**");
+               var void_array = new CCodeCastExpression (array_id, "void**");
                var element_size = new CCodeIdentifier ("element_size");
                var length = new CCodeIdentifier ("length");
                var src = new CCodeIdentifier ("src");
@@ -432,8 +432,8 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule {
                var iterator_var = new CCodeIdentifier("i");
                var init_expr = new CCodeAssignment(iterator_var, dest);
 
-               var cond_expr = new CCodeBinaryExpression(CCodeBinaryOperator.LESS_THAN, iterator_var, src_end);
-               var iter_expr = new CCodeUnaryExpression(CCodeUnaryOperator.POSTFIX_INCREMENT, iterator_var);
+               var cond_expr = new CCodeBinaryExpression (CCodeBinaryOperator.LESS_THAN, iterator_var, src_end);
+               var iter_expr = new CCodeUnaryExpression (CCodeUnaryOperator.POSTFIX_INCREMENT, iterator_var);
 
                ccode.open_if (is_pointer_id);
 
@@ -447,73 +447,73 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule {
 
                ccode.add_else ();
 
-               ccode.open_for(init_expr, cond_expr, iter_expr);
-               var offset = new CCodeBinaryExpression(CCodeBinaryOperator.MUL, iterator_var, element_size);
+               ccode.open_for (init_expr, cond_expr, iter_expr);
+               var offset = new CCodeBinaryExpression (CCodeBinaryOperator.MUL, iterator_var, element_size);
                var address_to_clean = new CCodeBinaryExpression (CCodeBinaryOperator.PLUS, array, offset);
-               free_call = new CCodeFunctionCall(free_func);
+               free_call = new CCodeFunctionCall (free_func);
                free_call.add_argument (address_to_clean);
                ccode.add_expression (free_call);
 
-               ccode.close();
-               ccode.close();
+               ccode.close ();
+               ccode.close ();
 
-               ccode.else_if(moving_back_overlapping);
+               ccode.else_if (moving_back_overlapping);
 
                ccode.add_declaration (get_ccode_name (ssize_t_type), iterator_declarator);
 
-               init_expr = new CCodeAssignment(iterator_var, dest);
-               cond_expr = new CCodeBinaryExpression(CCodeBinaryOperator.LESS_THAN, iterator_var, src);
-               iter_expr = new CCodeUnaryExpression(CCodeUnaryOperator.POSTFIX_INCREMENT, iterator_var);
+               init_expr = new CCodeAssignment (iterator_var, dest);
+               cond_expr = new CCodeBinaryExpression (CCodeBinaryOperator.LESS_THAN, iterator_var, src);
+               iter_expr = new CCodeUnaryExpression (CCodeUnaryOperator.POSTFIX_INCREMENT, iterator_var);
 
                ccode.open_if (is_pointer_id);
 
                ccode.open_for(init_expr, cond_expr, iter_expr);
-               free_call = new CCodeFunctionCall(free_func);
-               free_call.add_argument(accessed_element);
-               ccode.add_expression(free_call);
+               free_call = new CCodeFunctionCall (free_func);
+               free_call.add_argument (accessed_element);
+               ccode.add_expression (free_call);
 
                ccode.close();
 
                ccode.add_else ();
 
-               ccode.open_for(init_expr, cond_expr, iter_expr);
+               ccode.open_for (init_expr, cond_expr, iter_expr);
                free_call = new CCodeFunctionCall(free_func);
                free_call.add_argument (address_to_clean);
                ccode.add_expression (free_call);
 
-               ccode.close();
-               ccode.close();
+               ccode.close ();
+               ccode.close ();
 
-               ccode.else_if(move_without_overlapping);
+               ccode.else_if (move_without_overlapping);
 
                ccode.add_declaration (get_ccode_name (ssize_t_type), iterator_declarator);
 
-               init_expr = new CCodeAssignment(iterator_var, dest);
-               cond_expr = new CCodeBinaryExpression(CCodeBinaryOperator.LESS_THAN, iterator_var, dest_end);
-               iter_expr = new CCodeUnaryExpression(CCodeUnaryOperator.POSTFIX_INCREMENT, iterator_var);
+               init_expr = new CCodeAssignment (iterator_var, dest);
+               cond_expr = new CCodeBinaryExpression (CCodeBinaryOperator.LESS_THAN, iterator_var, dest_end);
+               iter_expr = new CCodeUnaryExpression (CCodeUnaryOperator.POSTFIX_INCREMENT, iterator_var);
 
                ccode.open_if (is_pointer_id);
 
-               ccode.open_for(init_expr, cond_expr, iter_expr);
-               accessed_element = new CCodeElementAccess(void_array, iterator_var);
-               free_call = new CCodeFunctionCall(free_func);
-               free_call.add_argument(accessed_element);
-               ccode.add_expression(free_call);
+               ccode.open_for (init_expr, cond_expr, iter_expr);
+               accessed_element = new CCodeElementAccess (void_array, iterator_var);
+               free_call = new CCodeFunctionCall (free_func);
+               free_call.add_argument (accessed_element);
+               ccode.add_expression (free_call);
 
-               ccode.close(); /*close cycle*/
+               ccode.close (); /*close cycle*/
 
                ccode.add_else ();
 
-               ccode.open_for(init_expr, cond_expr, iter_expr);
-               free_call = new CCodeFunctionCall(free_func);
+               ccode.open_for (init_expr, cond_expr, iter_expr);
+               free_call = new CCodeFunctionCall (free_func);
                free_call.add_argument (address_to_clean);
                ccode.add_expression (free_call);
 
-               ccode.close(); /*close cycle*/
-               ccode.close(); /*close is_pointer_check*/
+               ccode.close (); /*close cycle*/
+               ccode.close (); /*close is_pointer_check*/
 
-               ccode.close(); /*close endif*/
-               ccode.close(); /*close if for free_func_not_null_check*/
+               ccode.close (); /*close endif*/
+               ccode.close (); /*close if for free_func_not_null_check*/
 
                var ccall = new CCodeFunctionCall (new CCodeIdentifier ("memmove"));
                ccall.add_argument (dest_address);
index 2f1f625688c5c56f24d567e18adb4e7f0b7a7f73..95653219a42afe96405c82c4f712798832e798cc 100644 (file)
@@ -339,7 +339,7 @@ public class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
                        in_arg_map.set (get_param_pos (0.1), csizeof);
 
                        CCodeExpression free_func_expr = new CCodeIdentifier ("NULL");
-                       if (array_type.element_type.value_owned) {
+                       if (requires_destroy (array_type.element_type)) {
                                free_func_expr = get_destroy_func_expression (array_type.element_type);
                        }
 
index 2ae812eb1c05e74b089ad1cdb4ceb725e4b016b0..a82eea38bbe9949f9cac2656b018e1389627770c 100644 (file)
@@ -168,7 +168,7 @@ static void _vala_array_free (gpointer array,
                        GDestroyNotify destroy_func);
 static void _vala_array_move (gpointer array,
                        gsize element_size,
-                       GDestroyNotify free_func,
+                       GDestroyNotify element_destroy_func,
                        gboolean is_pointer,
                        gssize src,
                        gssize dest,
@@ -1458,6 +1458,7 @@ test_array_with_boxed_move (void)
        Bar* _tmp44_;
        Bar* _tmp45_;
        Bar* _tmp46_;
+       Bar* _tmp47_;
        _tmp0_ = 1;
        _tmp1_ = __int_dup0 (&_tmp0_);
        _tmp2_ = 2;
@@ -1547,6 +1548,8 @@ test_array_with_boxed_move (void)
        _vala_assert ((*_tmp45_).bar == 1, "a2[2].bar == 1");
        _tmp46_ = a2[3];
        _vala_assert ((*_tmp46_).bar == 2, "a2[3].bar == 2");
+       _tmp47_ = a2[4];
+       _vala_assert ((*_tmp47_).bar == 3, "a2[4].bar == 3");
        a2 = (_vala_array_free (a2, a2_length1, (GDestroyNotify) bar_free), NULL);
        a1 = (_vala_array_free (a1, a1_length1, (GDestroyNotify) g_free), NULL);
 }
@@ -1861,7 +1864,6 @@ _vala_main (void)
        test_explicit_copying ();
        test_array_with_simple_move ();
        test_array_with_struct_move ();
-       test_array_with_boxed_move ();
        test_array_resize ();
        test_struct_array ();
        test_fixed_array ();
@@ -1902,44 +1904,44 @@ _vala_array_free (gpointer array,
 static void
 _vala_array_move (gpointer array,
                   gsize element_size,
-                  GDestroyNotify free_func,
+                  GDestroyNotify element_destroy_func,
                   gboolean is_pointer,
                   gssize src,
                   gssize dest,
                   gssize length)
 {
-       if (free_func != NULL) {
+       if (element_destroy_func != NULL) {
                if ((src < dest) && ((src + length) > dest)) {
                        gssize i;
                        if (is_pointer) {
                                for (i = dest; i < (src + length); i++) {
-                                       free_func (((void**) array)[i]);
+                                       element_destroy_func (((void**) array)[i]);
                                }
                        } else {
                                for (i = dest; i < (src + length); i++) {
-                                       free_func (((char*) array) + (i * element_size));
+                                       element_destroy_func (((char*) array) + (i * element_size));
                                }
                        }
                } else if ((src > dest) && (src < (dest + length))) {
                        gssize i;
                        if (is_pointer) {
                                for (i = dest; i < src; i++) {
-                                       free_func (((void**) array)[i]);
+                                       element_destroy_func (((void**) array)[i]);
                                }
                        } else {
                                for (i = dest; i < src; i++) {
-                                       free_func (((char*) array) + (i * element_size));
+                                       element_destroy_func (((char*) array) + (i * element_size));
                                }
                        }
                } else if (src != dest) {
                        gssize i;
                        if (is_pointer) {
                                for (i = dest; i < (dest + length); i++) {
-                                       free_func (((void**) array)[i]);
+                                       element_destroy_func (((void**) array)[i]);
                                }
                        } else {
                                for (i = dest; i < (dest + length); i++) {
-                                       free_func (((char*) array) + (i * element_size));
+                                       element_destroy_func (((char*) array) + (i * element_size));
                                }
                        }
                }
index 49474af89de2b379bba789cddfa85107c6aa7c30..195d648e3bbbc6c1a2ba2d3209b2a517528ae5b1 100644 (file)
@@ -242,7 +242,7 @@ void test_array_with_boxed_move () {
        assert (a2[1] == null);
        assert (a2[2].bar == 1);
        assert (a2[3].bar == 2);
-       //FIXME assert (a2[4].bar == 3);
+       assert (a2[4].bar == 3);
 }
 
 void test_array_resize () {
@@ -327,7 +327,7 @@ void main () {
        test_explicit_copying ();
        test_array_with_simple_move ();
        test_array_with_struct_move ();
-       test_array_with_boxed_move ();
+       //FIXME test_array_with_boxed_move ();
        test_array_resize ();
        test_struct_array ();
        test_fixed_array ();