]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Generate dummy return statement to avoid C warning
authorJürg Billeter <j@bitron.ch>
Mon, 22 Mar 2010 21:58:08 +0000 (22:58 +0100)
committerJürg Billeter <j@bitron.ch>
Mon, 22 Mar 2010 21:58:08 +0000 (22:58 +0100)
codegen/valaccodemethodmodule.vala

index 35257f1e18510420512e436d8129f03cbdde3fa8..605ce8ebd6fbeffb41a14ec7fe6f0d54965b868d 100644 (file)
@@ -564,11 +564,15 @@ internal class Vala.CCodeMethodModule : CCodeStructModule {
                                }
 
                                if (!(m.return_type is VoidType) && !m.return_type.is_real_non_null_struct_type () && !m.coroutine) {
-                                       // do not declare result variable if exit block is known to be unreachable
-                                       if (m.exit_block == null || m.exit_block.get_predecessors ().size > 0) {
-                                               var cdecl = new CCodeDeclaration (m.return_type.get_cname ());
-                                               cdecl.add_declarator (new CCodeVariableDeclarator ("result"));
-                                               cinit.append (cdecl);
+                                       var cdecl = new CCodeDeclaration (m.return_type.get_cname ());
+                                       var vardecl =  new CCodeVariableDeclarator ("result", default_value_for_type (m.return_type, true));
+                                       vardecl.init0 = true;
+                                       cdecl.add_declarator (vardecl);
+                                       cinit.append (cdecl);
+
+                                       // add dummy return if exit block is known to be unreachable to silence C compiler
+                                       if (m.exit_block != null && m.exit_block.get_predecessors ().size == 0) {
+                                               function.block.add_statement (new CCodeReturnStatement (new CCodeIdentifier ("result")));
                                        }
                                }