]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Omit free function from unowned simple generic arguments
authorEvan Nemerson <evan@coeus-group.com>
Sun, 7 Nov 2010 07:25:08 +0000 (00:25 -0700)
committerJürg Billeter <j@bitron.ch>
Mon, 8 Nov 2010 20:06:01 +0000 (21:06 +0100)
Fixes bug 627198.

codegen/valaccodemethodcallmodule.vala

index dd7e499d0394a1f870857f7b4ac766e93fd8e441..f37d57f2c650dbaf46b08118cd387e987e7c8723 100644 (file)
@@ -383,10 +383,12 @@ public class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
                                                                var generic_type = (GenericType) param.variable_type;
                                                                int type_param_index = m.get_type_parameter_index (generic_type.type_parameter.name);
                                                                var type_arg = ma.get_type_arguments ().get (type_param_index);
-                                                               if (requires_copy (type_arg)) {
-                                                                       carg_map.set (get_param_pos (param.cdestroy_notify_parameter_position), get_destroy_func_expression (type_arg));
-                                                               } else {
-                                                                       carg_map.set (get_param_pos (param.cdestroy_notify_parameter_position), new CCodeConstant ("NULL"));
+                                                               if (param.variable_type.value_owned) {
+                                                                       if (requires_copy (type_arg)) {
+                                                                               carg_map.set (get_param_pos (param.cdestroy_notify_parameter_position), get_destroy_func_expression (type_arg));
+                                                                       } else {
+                                                                               carg_map.set (get_param_pos (param.cdestroy_notify_parameter_position), new CCodeConstant ("NULL"));
+                                                                       }
                                                                }
                                                        }
                                                }