Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(549)

Unified Diff: xfa/fxfa/fm2js/xfa_expression.cpp

Issue 2528543003: More unique_ptrs in CXFA_FMParse::ParseForeachExpression and avoid leaks (Closed)
Patch Set: Not so much unique_ptr Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: xfa/fxfa/fm2js/xfa_expression.cpp
diff --git a/xfa/fxfa/fm2js/xfa_expression.cpp b/xfa/fxfa/fm2js/xfa_expression.cpp
index 6895f25438ee04924a63318cefdf9afb1639c9a6..5734593ff82edca8ead072757cabcf3491c3ee76 100644
--- a/xfa/fxfa/fm2js/xfa_expression.cpp
+++ b/xfa/fxfa/fm2js/xfa_expression.cpp
@@ -510,21 +510,14 @@ void CXFA_FMForExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) {
CXFA_FMForeachExpression::CXFA_FMForeachExpression(
uint32_t line,
const CFX_WideStringC& wsIdentifier,
- CFX_ArrayTemplate<CXFA_FMSimpleExpression*>* pAccessors,
+ std::vector<std::unique_ptr<CXFA_FMSimpleExpression>>&& pAccessors,
CXFA_FMExpression* pList)
: CXFA_FMLoopExpression(line),
m_wsIdentifier(wsIdentifier),
- m_pAccessors(pAccessors),
+ m_pAccessors(std::move(pAccessors)),
Tom Sepez 2016/11/23 20:21:55 do we need std::move here?
npm 2016/11/23 20:40:27 Yes, m_pAccessors(pAccessors) does not compile.
m_pList(pList) {}
-CXFA_FMForeachExpression::~CXFA_FMForeachExpression() {
- if (m_pAccessors) {
- for (int i = 0; i < m_pAccessors->GetSize(); ++i)
- m_pAccessors->GetAt(i);
-
- delete m_pAccessors;
- }
-}
+CXFA_FMForeachExpression::~CXFA_FMForeachExpression() {}
void CXFA_FMForeachExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << FX_WSTRC(L"{\n");
@@ -543,10 +536,10 @@ void CXFA_FMForeachExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << XFA_FM_EXPTypeToString(CONCATFMOBJECT);
javascript << FX_WSTRC(L"(");
- for (int i = 0; i < m_pAccessors->GetSize(); ++i) {
- CXFA_FMSimpleExpression* s = m_pAccessors->GetAt(i);
+ for (size_t i = 0; i < m_pAccessors.size(); ++i) {
+ CXFA_FMSimpleExpression* s = m_pAccessors.at(i).get();
s->ToJavaScript(javascript);
- if (i + 1 < m_pAccessors->GetSize()) {
+ if (i + 1 < m_pAccessors.size()) {
javascript << FX_WSTRC(L", ");
}
}
@@ -594,10 +587,10 @@ void CXFA_FMForeachExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) {
javascript << FX_WSTRC(L" = ");
javascript << XFA_FM_EXPTypeToString(CONCATFMOBJECT);
javascript << FX_WSTRC(L"(");
- for (int i = 0; i < m_pAccessors->GetSize(); ++i) {
- CXFA_FMSimpleExpression* s = m_pAccessors->GetAt(i);
+ for (size_t i = 0; i < m_pAccessors.size(); ++i) {
+ CXFA_FMSimpleExpression* s = m_pAccessors.at(i).get();
s->ToJavaScript(javascript);
- if (i + 1 < m_pAccessors->GetSize()) {
+ if (i + 1 < m_pAccessors.size()) {
javascript << FX_WSTRC(L", ");
}
}

Powered by Google App Engine
This is Rietveld 408576698