summaryrefslogtreecommitdiff
path: root/idlc/inc
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2015-09-27 19:23:05 +0200
committerStephan Bergmann <sbergman@redhat.com>2015-09-28 08:12:15 +0200
commita5bb6eff8672f5a6e7ed1f885f69ca8434db6ce7 (patch)
tree97f5ad5248f70b4a348dcfb829e0a3ff368c7303 /idlc/inc
parent1f8723bf91bd48d432f1d2b930d0908ff28f44df (diff)
Return unique_ptr from AstExpression::eval_* functions
...generally, idlc leaks most memory, and e.g. trying to turn AstExpression::m_exprValue into a unique_ptr would fail because AstExpression::eval_symbol returns a pointer to an object "owned" elsewhere (but never actually deleted by its owner). So improvement of idlc ends here---for one, it does not improve anything to try and make idlc not leak memory, and for another, idlc is doomed to go away anyway. Change-Id: I36f54130c8bfd1933126ae7f8a982e50d9bc616e
Diffstat (limited to 'idlc/inc')
-rw-r--r--idlc/inc/idlc/astexpression.hxx10
1 files changed, 7 insertions, 3 deletions
diff --git a/idlc/inc/idlc/astexpression.hxx b/idlc/inc/idlc/astexpression.hxx
index deb0da48d211..6723297e2551 100644
--- a/idlc/inc/idlc/astexpression.hxx
+++ b/idlc/inc/idlc/astexpression.hxx
@@ -19,6 +19,10 @@
#ifndef INCLUDED_IDLC_INC_IDLC_ASTEXPRESSION_HXX
#define INCLUDED_IDLC_INC_IDLC_ASTEXPRESSION_HXX
+#include <sal/config.h>
+
+#include <memory>
+
#include <idlc/idlc.hxx>
// Enum to define all the different operators to combine expressions
@@ -120,9 +124,9 @@ private:
// Fill out the lineno, filename and definition scope details
void fillDefinitionDetails();
// Evaluate different sets of operators
- AstExprValue* eval_bin_op();
- AstExprValue* eval_bit_op();
- AstExprValue* eval_un_op();
+ std::unique_ptr<AstExprValue> eval_bin_op();
+ std::unique_ptr<AstExprValue> eval_bit_op();
+ std::unique_ptr<AstExprValue> eval_un_op();
AstExprValue* eval_symbol();
AstScope* m_pScope; // scope defined in