diff options
author | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2014-07-20 16:42:59 +0200 |
---|---|---|
committer | Holger Freyther <holger+qt@freyther.de> | 2014-07-21 14:43:01 +0200 |
commit | a8a66e51ef5d9506a5458425c7e749935afa649d (patch) | |
tree | e05fa4bf39c993f3e6aed17fe505044c2e8f4e83 /src/qml/jit | |
parent | 23e506fb3ea393e6ed1698923094000d6b640dac (diff) |
qml: Make ownership of CompiledUnit more clear
The coverity scan utility didn't understand the code flow and assumed
the compiledData would be leaked. Use a QScopedPointer and have the
::backendCompileStep() forward the ownership. From what I see the code
has not leaked memory.
Fixes: CID 10605, CID 10607
Change-Id: I7759f681871bbe12e2aa320a5f39c47c70f4e4e0
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/jit')
-rw-r--r-- | src/qml/jit/qv4isel_masm.cpp | 4 | ||||
-rw-r--r-- | src/qml/jit/qv4isel_masm_p.h | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/src/qml/jit/qv4isel_masm.cpp b/src/qml/jit/qv4isel_masm.cpp index f6c1a03273..30df7bfe3b 100644 --- a/src/qml/jit/qv4isel_masm.cpp +++ b/src/qml/jit/qv4isel_masm.cpp @@ -203,9 +203,9 @@ InstructionSelection::InstructionSelection(QQmlEnginePrivate *qmlEngine, QV4::Ex : EvalInstructionSelection(execAllocator, module, jsGenerator) , _block(0) , _as(0) + , compilationUnit(new CompilationUnit) , qmlEngine(qmlEngine) { - compilationUnit = new CompilationUnit; compilationUnit->codeRefs.resize(module->functions.size()); } @@ -298,7 +298,7 @@ const void *InstructionSelection::addConstantTable(QVector<Primitive> *values) QV4::CompiledData::CompilationUnit *InstructionSelection::backendCompileStep() { - return compilationUnit; + return compilationUnit.take(); } void InstructionSelection::callBuiltinInvalid(IR::Name *func, IR::ExprList *args, IR::Expr *result) diff --git a/src/qml/jit/qv4isel_masm_p.h b/src/qml/jit/qv4isel_masm_p.h index 83d2464ef3..9c0bc73a65 100644 --- a/src/qml/jit/qv4isel_masm_p.h +++ b/src/qml/jit/qv4isel_masm_p.h @@ -254,7 +254,7 @@ private: QSet<IR::Jump *> _removableJumps; Assembler* _as; - CompilationUnit *compilationUnit; + QScopedPointer<CompilationUnit> compilationUnit; QQmlEnginePrivate *qmlEngine; }; |