From 6761345786d05c7a2d909f335a1985bc23562dc6 Mon Sep 17 00:00:00 2001 From: ip_gpu Date: Thu, 2 Nov 2017 09:50:10 +0500 Subject: [PATCH] fixed from PVS-Studio V773 The function was exited without releasing the 'valueLeft' pointer. A memory leak is possible. syntaxtreeevaluate.cpp 310 V773 The function was exited without releasing the 'value' pointer. A memory leak is possible. syntaxtreeevaluate.cpp 481 --- NULLC/SyntaxTreeEvaluate.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/NULLC/SyntaxTreeEvaluate.cpp b/NULLC/SyntaxTreeEvaluate.cpp index 148c8495d..81485ed60 100644 --- a/NULLC/SyntaxTreeEvaluate.cpp +++ b/NULLC/SyntaxTreeEvaluate.cpp @@ -306,8 +306,10 @@ NodeNumber* NodeVariableModify::Evaluate(char *memory, unsigned int size) // Compute second value NodeNumber *valueRight = second->Evaluate(memory, size); - if(!valueRight) + if (!valueRight) { + delete valueLeft; return NULL; + } // Convert it to the result type if(midType == typeDouble || midType == typeFloat) valueRight->ConvertTo(typeDouble); @@ -477,8 +479,10 @@ NodeNumber* NodePreOrPostOp::Evaluate(char *memory, unsigned int size) *(float*)(memory + addrShift) = *(float*)(memory + addrShift) + 1.0f * (incOp ? 1 : -1); else if(typeInfo == typeDouble) *(double*)(memory + addrShift) = *(double*)(memory + addrShift) + 1.0 * (incOp ? 1 : -1); - else + else { + delete value; return NULL; + } } return optimised ? new NodeNumber(0, typeVoid) : value; }