Fix valgrind warnings about uninitialised variable
authorLars Knoll <lars.knoll@digia.com>
Fri, 18 Jan 2013 19:22:07 +0000 (20:22 +0100)
committerSimon Hausmann <simon.hausmann@digia.com>
Fri, 18 Jan 2013 19:38:28 +0000 (20:38 +0100)
Apparently gcc was miscompiling the code with boolean
bitfields. Changing them to uint's makes all errors
go away.

Change-Id: I95e856e4b5ebca0d10fa250a8a4640697998ff38
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
qv4ir_p.h
qv4isel_p.cpp

index 962aa45..03ac2ad 100644 (file)
--- a/qv4ir_p.h
+++ b/qv4ir_p.h
@@ -612,9 +612,10 @@ struct Function {
 
     int insideWith;
 
-    bool hasDirectEval: 1;
-    bool usesArgumentsObject : 1;
-    bool isStrict: 1;
+    uint hasDirectEval: 1;
+    uint usesArgumentsObject : 1;
+    uint isStrict: 1;
+    uint unused : 29;
 
     template <typename _Tp> _Tp *New() { return new (pool->allocate(sizeof(_Tp))) _Tp(); }
 
@@ -627,6 +628,7 @@ struct Function {
         , hasDirectEval(false)
         , usesArgumentsObject(false)
         , isStrict(false)
+        , unused(0)
     { this->name = newString(name); }
 
     ~Function();
index da9b6cd..7c1c6cc 100644 (file)
@@ -40,6 +40,7 @@ VM::Function *EvalInstructionSelection::createFunctionMapping(VM::ExecutionEngin
 
     vmFunction->hasDirectEval = irFunction->hasDirectEval;
     vmFunction->usesArgumentsObject = irFunction->usesArgumentsObject;
+    vmFunction->hasNestedFunctions = !irFunction->nestedFunctions.isEmpty();
     vmFunction->isStrict = irFunction->isStrict;
 
     foreach (const QString *formal, irFunction->formals)
@@ -52,7 +53,6 @@ VM::Function *EvalInstructionSelection::createFunctionMapping(VM::ExecutionEngin
     foreach (IR::Function *function, irFunction->nestedFunctions)
         createFunctionMapping(engine, function);
 
-    vmFunction->hasNestedFunctions = !irFunction->nestedFunctions.isEmpty();
 
     if (engine->debugger)
         engine->debugger->mapFunction(vmFunction, irFunction);