[vala] Always initialize temp variables to fix fatal warnings of GCC 4.8



commit eeb861dfba147bc37cfc7a9c22e1b582cf20ff31
Author: Luca Bruno <lucabru src gnome org>
Date:   Wed Jun 12 22:56:36 2013 +0200

    Always initialize temp variables to fix fatal warnings of GCC 4.8
    
    GCC 4.8 is being strict on possible uninitialized variables.
    This may or not may be a temporary solution. Always initializing
    variables shouldn't be a problem, apart missing possible bugs
    in the generated code.

 codegen/valaccodebasemodule.vala |   29 ++++++++++++-----------------
 vala/valalocalvariable.vala      |    1 +
 2 files changed, 13 insertions(+), 17 deletions(-)
---
diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala
index d55d3f7..ec477cc 100644
--- a/codegen/valaccodebasemodule.vala
+++ b/codegen/valaccodebasemodule.vala
@@ -3406,32 +3406,27 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
        }
        
        public void emit_temp_var (LocalVariable local) {
-               var init = !(local.name.has_prefix ("*") || local.no_init);
                if (is_in_coroutine ()) {
                        closure_struct.add_field (get_ccode_name (local.variable_type), local.name);
 
                        // even though closure struct is zerod, we need to initialize temporary variables
                        // as they might be used multiple times when declared in a loop
 
-                       if (init) {
-                               var initializer = default_value_for_type (local.variable_type, false);
-                               if (initializer == null) {
-                                       cfile.add_include ("string.h");
-                                       var memset_call = new CCodeFunctionCall (new CCodeIdentifier 
("memset"));
-                                       memset_call.add_argument (new CCodeUnaryExpression 
(CCodeUnaryOperator.ADDRESS_OF, get_variable_cexpression (local.name)));
-                                       memset_call.add_argument (new CCodeConstant ("0"));
-                                       memset_call.add_argument (new CCodeIdentifier ("sizeof (%s)".printf 
(get_ccode_name (local.variable_type))));
-                                       ccode.add_expression (memset_call);
-                               } else {
-                                       ccode.add_assignment (get_variable_cexpression (local.name), 
initializer);
-                               }
+                       var initializer = default_value_for_type (local.variable_type, false);
+                       if (initializer == null) {
+                               cfile.add_include ("string.h");
+                               var memset_call = new CCodeFunctionCall (new CCodeIdentifier ("memset"));
+                               memset_call.add_argument (new CCodeUnaryExpression 
(CCodeUnaryOperator.ADDRESS_OF, get_variable_cexpression (local.name)));
+                               memset_call.add_argument (new CCodeConstant ("0"));
+                               memset_call.add_argument (new CCodeIdentifier ("sizeof (%s)".printf 
(get_ccode_name (local.variable_type))));
+                               ccode.add_expression (memset_call);
+                       } else {
+                               ccode.add_assignment (get_variable_cexpression (local.name), initializer);
                        }
                } else {
                        var cvar = new CCodeVariableDeclarator (local.name, null, get_ccode_declarator_suffix 
(local.variable_type));
-                       if (init) {
-                               cvar.initializer = default_value_for_type (local.variable_type, true);
-                               cvar.init0 = true;
-                       }
+                       cvar.initializer = default_value_for_type (local.variable_type, true);
+                       cvar.init0 = true;
                        ccode.add_declaration (get_ccode_name (local.variable_type), cvar);
                }
        }
diff --git a/vala/valalocalvariable.vala b/vala/valalocalvariable.vala
index 4fd8daf..9f4ff59 100644
--- a/vala/valalocalvariable.vala
+++ b/vala/valalocalvariable.vala
@@ -35,6 +35,7 @@ public class Vala.LocalVariable : Variable {
 
        public bool captured { get; set; }
 
+       /* Currently ignored due to GCC 4.8 being strict on possibly uninitialized variables */
        public bool no_init { get; set; }
 
        /**


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]