From 89ca14a587b0ed95f19718e40a56f3cece3ecd59 Mon Sep 17 00:00:00 2001 From: "alexey.lysiuk" Date: Mon, 22 Feb 2016 14:24:34 +0200 Subject: [PATCH] Fixed memory leak caused by return statement parsing --- src/thingdef/thingdef_exp.h | 1 + src/thingdef/thingdef_expression.cpp | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/src/thingdef/thingdef_exp.h b/src/thingdef/thingdef_exp.h index 3221debb8..0802c08f8 100644 --- a/src/thingdef/thingdef_exp.h +++ b/src/thingdef/thingdef_exp.h @@ -900,6 +900,7 @@ class FxReturnStatement : public FxExpression public: FxReturnStatement(FxVMFunctionCall *call, const FScriptPosition &pos); + ~FxReturnStatement(); FxExpression *Resolve(FCompileContext&); ExpEmit Emit(VMFunctionBuilder *build); VMFunction *GetDirectFunction(); diff --git a/src/thingdef/thingdef_expression.cpp b/src/thingdef/thingdef_expression.cpp index 714cb6c3e..f9ab32b73 100644 --- a/src/thingdef/thingdef_expression.cpp +++ b/src/thingdef/thingdef_expression.cpp @@ -3525,6 +3525,11 @@ FxReturnStatement::FxReturnStatement(FxVMFunctionCall *call, const FScriptPositi { } +FxReturnStatement::~FxReturnStatement() +{ + SAFE_DELETE(Call); +} + FxExpression *FxReturnStatement::Resolve(FCompileContext &ctx) { CHECKRESOLVED();