From 9c0f5f2fa47f0e301dba56d3fba2a7e30b9fdb87 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Tue, 24 May 2016 15:25:58 +0300 Subject: [PATCH] Refactoring. Use QScopedPointer for class Calculator. --HG-- branch : develop --- src/app/tape/tmainwindow.cpp | 3 +-- src/app/valentina/dialogs/dialogincrements.cpp | 3 +-- src/app/valentina/xml/vpattern.cpp | 3 +-- src/libs/vformat/vmeasurements.cpp | 3 +-- src/libs/vpatterndb/calculator.h | 3 +-- src/libs/vpatterndb/vformula.cpp | 3 +-- src/libs/vtools/dialogs/tools/dialogtool.cpp | 3 +-- src/libs/vtools/tools/drawTools/vdrawtool.cpp | 15 ++++----------- src/libs/vtools/visualization/visualization.cpp | 3 +-- 9 files changed, 12 insertions(+), 27 deletions(-) diff --git a/src/app/tape/tmainwindow.cpp b/src/app/tape/tmainwindow.cpp index 7e86fa957..7df09786b 100644 --- a/src/app/tape/tmainwindow.cpp +++ b/src/app/tape/tmainwindow.cpp @@ -2421,9 +2421,8 @@ bool TMainWindow::EvalFormula(const QString &formula, bool fromUser, VContainer f = formula; } f.replace("\n", " "); - Calculator *cal = new Calculator(); + QScopedPointer cal(new Calculator()); qreal result = cal->EvalFormula(data->PlainVariables(), f); - delete cal; if (qIsInf(result) || qIsNaN(result)) { diff --git a/src/app/valentina/dialogs/dialogincrements.cpp b/src/app/valentina/dialogs/dialogincrements.cpp index 9c936f882..c308b3ff4 100644 --- a/src/app/valentina/dialogs/dialogincrements.cpp +++ b/src/app/valentina/dialogs/dialogincrements.cpp @@ -310,9 +310,8 @@ bool DialogIncrements::EvalIncrementFormula(const QString &formula, bool fromUse f = formula; } f.replace("\n", " "); - Calculator *cal = new Calculator(); + QScopedPointer cal(new Calculator()); const qreal result = cal->EvalFormula(data->PlainVariables(), f); - delete cal; if (qIsInf(result) || qIsNaN(result)) { diff --git a/src/app/valentina/xml/vpattern.cpp b/src/app/valentina/xml/vpattern.cpp index 3aed8a375..d6fd0c0c4 100644 --- a/src/app/valentina/xml/vpattern.cpp +++ b/src/app/valentina/xml/vpattern.cpp @@ -2455,9 +2455,8 @@ qreal VPattern::EvalFormula(VContainer *data, const QString &formula, bool *ok) // Replace line return character with spaces for calc if exist QString f = formula; f.replace("\n", " "); - Calculator *cal = new Calculator(); + QScopedPointer cal(new Calculator()); const qreal result = cal->EvalFormula(data->PlainVariables(), f); - delete cal; (qIsInf(result) || qIsNaN(result)) ? *ok = false : *ok = true; return result; diff --git a/src/libs/vformat/vmeasurements.cpp b/src/libs/vformat/vmeasurements.cpp index de4e0402a..346931428 100644 --- a/src/libs/vformat/vmeasurements.cpp +++ b/src/libs/vformat/vmeasurements.cpp @@ -879,9 +879,8 @@ qreal VMeasurements::EvalFormula(VContainer *data, const QString &formula, bool // Replace line return character with spaces for calc if exist QString f = formula; f.replace("\n", " "); - Calculator *cal = new Calculator(); + QScopedPointer cal(new Calculator()); const qreal result = cal->EvalFormula(data->PlainVariables(), f); - delete cal; (qIsInf(result) || qIsNaN(result)) ? *ok = false : *ok = true; return result; diff --git a/src/libs/vpatterndb/calculator.h b/src/libs/vpatterndb/calculator.h index c3d89c22d..8f6030247 100644 --- a/src/libs/vpatterndb/calculator.h +++ b/src/libs/vpatterndb/calculator.h @@ -48,9 +48,8 @@ class VContainer; * //Need delete dialog here because parser in dialog don't allow use correct separator for parsing here. * //Don't know why. * delete dialog; - * Calculator *cal = new Calculator(); + * QScopedPointer cal(new Calculator()); * result = cal->EvalFormula(data->PlainVariables(), formula); - * delete cal;//Here can be memory leak, but dialog already check this formula and probability very low. * } */ class Calculator:public qmu::QmuFormulaBase diff --git a/src/libs/vpatterndb/vformula.cpp b/src/libs/vpatterndb/vformula.cpp index 811b2a4b8..703146d8b 100644 --- a/src/libs/vpatterndb/vformula.cpp +++ b/src/libs/vpatterndb/vformula.cpp @@ -234,10 +234,9 @@ void VFormula::Eval() { try { - Calculator *cal = new Calculator(); + QScopedPointer cal(new Calculator()); QString expression = qApp->TrVars()->FormulaFromUser(formula, qApp->Settings()->GetOsSeparator()); const qreal result = cal->EvalFormula(data->PlainVariables(), expression); - delete cal; if (qIsInf(result) || qIsNaN(result)) { diff --git a/src/libs/vtools/dialogs/tools/dialogtool.cpp b/src/libs/vtools/dialogs/tools/dialogtool.cpp index 9b0c1f080..200a52287 100644 --- a/src/libs/vtools/dialogs/tools/dialogtool.cpp +++ b/src/libs/vtools/dialogs/tools/dialogtool.cpp @@ -449,9 +449,8 @@ qreal DialogTool::Eval(const QString &text, bool &flag, QLabel *label, const QSt formula.replace("\n", " "); // Translate to internal look. formula = qApp->TrVars()->FormulaFromUser(formula, qApp->Settings()->GetOsSeparator()); - Calculator *cal = new Calculator(); + QScopedPointer cal(new Calculator()); result = cal->EvalFormula(data->PlainVariables(), formula); - delete cal; if (qIsInf(result) || qIsNaN(result)) { diff --git a/src/libs/vtools/tools/drawTools/vdrawtool.cpp b/src/libs/vtools/tools/drawTools/vdrawtool.cpp index 29ac0a7c3..348ece144 100644 --- a/src/libs/vtools/tools/drawTools/vdrawtool.cpp +++ b/src/libs/vtools/tools/drawTools/vdrawtool.cpp @@ -294,9 +294,8 @@ qreal VDrawTool::CheckFormula(const quint32 &toolId, QString &formula, VContaine Calculator *cal = nullptr; try { - cal = new Calculator(); + QScopedPointer cal(new Calculator()); result = cal->EvalFormula(data->PlainVariables(), formula); - delete cal; if (qIsInf(result) || qIsNaN(result)) { @@ -311,11 +310,10 @@ qreal VDrawTool::CheckFormula(const quint32 &toolId, QString &formula, VContaine << "Message: " << e.GetMsg() << "\n" << "Expression: " << e.GetExpr() << "\n" << "--------------------------------------"; - delete cal; if (qApp->IsAppInGUIMode()) { - DialogUndo *dialogUndo = new DialogUndo(qApp->getMainWindow()); + QScopedPointer dialogUndo(new DialogUndo(qApp->getMainWindow())); forever { if (dialogUndo->exec() == QDialog::Accepted) @@ -323,8 +321,7 @@ qreal VDrawTool::CheckFormula(const quint32 &toolId, QString &formula, VContaine const UndoButton resultUndo = dialogUndo->Result(); if (resultUndo == UndoButton::Fix) { - DialogEditWrongFormula *dialog = new DialogEditWrongFormula(data, toolId, - qApp->getMainWindow()); + auto *dialog = new DialogEditWrongFormula(data, toolId, qApp->getMainWindow()); dialog->setWindowTitle(tr("Edit wrong formula")); dialog->SetFormula(formula); if (dialog->exec() == QDialog::Accepted) @@ -333,10 +330,8 @@ qreal VDrawTool::CheckFormula(const quint32 &toolId, QString &formula, VContaine /* Need delete dialog here because parser in dialog don't allow use correct separator for * parsing here. */ delete dialog; - Calculator *cal1 = new Calculator(); + QScopedPointer cal1(new Calculator()); result = cal1->EvalFormula(data->PlainVariables(), formula); - delete cal1; /* Here can be memory leak, but dialog already checked this formula and - probability very low. */ if (qIsInf(result) || qIsNaN(result)) { @@ -358,11 +353,9 @@ qreal VDrawTool::CheckFormula(const quint32 &toolId, QString &formula, VContaine } else { - delete dialogUndo; throw; } } - delete dialogUndo; } else { diff --git a/src/libs/vtools/visualization/visualization.cpp b/src/libs/vtools/visualization/visualization.cpp index 04292b85f..fc0838621 100644 --- a/src/libs/vtools/visualization/visualization.cpp +++ b/src/libs/vtools/visualization/visualization.cpp @@ -158,9 +158,8 @@ qreal Visualization::FindVal(const QString &expression, const QHashTrVars()->FormulaFromUser(formula, qApp->Settings()->GetOsSeparator()); - Calculator *cal = new Calculator(); + QScopedPointer cal(new Calculator()); val = cal->EvalFormula(vars, formula); - delete cal; if (qIsInf(val) || qIsNaN(val)) {