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

Side by Side Diff: xfa/fxfa/fm2js/xfa_expression.cpp

Issue 2528543003: More unique_ptrs in CXFA_FMParse::ParseForeachExpression and avoid leaks (Closed)
Patch Set: Comments Created 4 years 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 unified diff | Download patch
« no previous file with comments | « xfa/fxfa/fm2js/xfa_expression.h ('k') | xfa/fxfa/fm2js/xfa_fmparse.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "xfa/fxfa/fm2js/xfa_expression.h" 7 #include "xfa/fxfa/fm2js/xfa_expression.h"
8 8
9 #include <utility> 9 #include <utility>
10 10
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after
503 javascript << FX_WSTRC(L"1"); 503 javascript << FX_WSTRC(L"1");
504 } 504 }
505 javascript << FX_WSTRC(L")\n"); 505 javascript << FX_WSTRC(L")\n");
506 m_pList->ToImpliedReturnJS(javascript); 506 m_pList->ToImpliedReturnJS(javascript);
507 javascript << FX_WSTRC(L"}\n"); 507 javascript << FX_WSTRC(L"}\n");
508 } 508 }
509 509
510 CXFA_FMForeachExpression::CXFA_FMForeachExpression( 510 CXFA_FMForeachExpression::CXFA_FMForeachExpression(
511 uint32_t line, 511 uint32_t line,
512 const CFX_WideStringC& wsIdentifier, 512 const CFX_WideStringC& wsIdentifier,
513 CFX_ArrayTemplate<CXFA_FMSimpleExpression*>* pAccessors, 513 std::vector<std::unique_ptr<CXFA_FMSimpleExpression>>&& pAccessors,
514 CXFA_FMExpression* pList) 514 CXFA_FMExpression* pList)
515 : CXFA_FMLoopExpression(line), 515 : CXFA_FMLoopExpression(line),
516 m_wsIdentifier(wsIdentifier), 516 m_wsIdentifier(wsIdentifier),
517 m_pAccessors(pAccessors), 517 m_pAccessors(std::move(pAccessors)),
518 m_pList(pList) {} 518 m_pList(pList) {}
519 519
520 CXFA_FMForeachExpression::~CXFA_FMForeachExpression() { 520 CXFA_FMForeachExpression::~CXFA_FMForeachExpression() {}
521 if (m_pAccessors) {
522 for (int i = 0; i < m_pAccessors->GetSize(); ++i)
523 m_pAccessors->GetAt(i);
524
525 delete m_pAccessors;
526 }
527 }
528 521
529 void CXFA_FMForeachExpression::ToJavaScript(CFX_WideTextBuf& javascript) { 522 void CXFA_FMForeachExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
530 javascript << FX_WSTRC(L"{\n"); 523 javascript << FX_WSTRC(L"{\n");
531 javascript << FX_WSTRC(L"var "); 524 javascript << FX_WSTRC(L"var ");
532 if (m_wsIdentifier.GetAt(0) == L'!') { 525 if (m_wsIdentifier.GetAt(0) == L'!') {
533 CFX_WideString tempIdentifier = 526 CFX_WideString tempIdentifier =
534 EXCLAMATION_IN_IDENTIFIER + m_wsIdentifier.Mid(1); 527 EXCLAMATION_IN_IDENTIFIER + m_wsIdentifier.Mid(1);
535 javascript << tempIdentifier; 528 javascript << tempIdentifier;
536 } else { 529 } else {
537 javascript << m_wsIdentifier; 530 javascript << m_wsIdentifier;
538 } 531 }
539 javascript << FX_WSTRC(L" = null;\n"); 532 javascript << FX_WSTRC(L" = null;\n");
540 javascript << FX_WSTRC(L"var "); 533 javascript << FX_WSTRC(L"var ");
541 javascript << RUNTIMEBLOCKTEMPARRAY; 534 javascript << RUNTIMEBLOCKTEMPARRAY;
542 javascript << FX_WSTRC(L" = "); 535 javascript << FX_WSTRC(L" = ");
543 javascript << XFA_FM_EXPTypeToString(CONCATFMOBJECT); 536 javascript << XFA_FM_EXPTypeToString(CONCATFMOBJECT);
544 javascript << FX_WSTRC(L"("); 537 javascript << FX_WSTRC(L"(");
545 538
546 for (int i = 0; i < m_pAccessors->GetSize(); ++i) { 539 for (size_t i = 0; i < m_pAccessors.size(); ++i) {
547 CXFA_FMSimpleExpression* s = m_pAccessors->GetAt(i); 540 CXFA_FMSimpleExpression* s = m_pAccessors.at(i).get();
548 s->ToJavaScript(javascript); 541 s->ToJavaScript(javascript);
549 if (i + 1 < m_pAccessors->GetSize()) { 542 if (i + 1 < m_pAccessors.size()) {
550 javascript << FX_WSTRC(L", "); 543 javascript << FX_WSTRC(L", ");
551 } 544 }
552 } 545 }
553 javascript << FX_WSTRC(L");\n"); 546 javascript << FX_WSTRC(L");\n");
554 javascript << FX_WSTRC(L"var "); 547 javascript << FX_WSTRC(L"var ");
555 javascript << RUNTIMEBLOCKTEMPARRAYINDEX; 548 javascript << RUNTIMEBLOCKTEMPARRAYINDEX;
556 javascript << FX_WSTRC(L" = 0;\n"); 549 javascript << FX_WSTRC(L" = 0;\n");
557 javascript << FX_WSTRC(L"while("); 550 javascript << FX_WSTRC(L"while(");
558 javascript << RUNTIMEBLOCKTEMPARRAYINDEX; 551 javascript << RUNTIMEBLOCKTEMPARRAYINDEX;
559 javascript << FX_WSTRC(L" < "); 552 javascript << FX_WSTRC(L" < ");
(...skipping 27 matching lines...) Expand all
587 javascript << tempIdentifier; 580 javascript << tempIdentifier;
588 } else { 581 } else {
589 javascript << m_wsIdentifier; 582 javascript << m_wsIdentifier;
590 } 583 }
591 javascript << FX_WSTRC(L" = null;\n"); 584 javascript << FX_WSTRC(L" = null;\n");
592 javascript << FX_WSTRC(L"var "); 585 javascript << FX_WSTRC(L"var ");
593 javascript << RUNTIMEBLOCKTEMPARRAY; 586 javascript << RUNTIMEBLOCKTEMPARRAY;
594 javascript << FX_WSTRC(L" = "); 587 javascript << FX_WSTRC(L" = ");
595 javascript << XFA_FM_EXPTypeToString(CONCATFMOBJECT); 588 javascript << XFA_FM_EXPTypeToString(CONCATFMOBJECT);
596 javascript << FX_WSTRC(L"("); 589 javascript << FX_WSTRC(L"(");
597 for (int i = 0; i < m_pAccessors->GetSize(); ++i) { 590 for (size_t i = 0; i < m_pAccessors.size(); ++i) {
598 CXFA_FMSimpleExpression* s = m_pAccessors->GetAt(i); 591 CXFA_FMSimpleExpression* s = m_pAccessors.at(i).get();
599 s->ToJavaScript(javascript); 592 s->ToJavaScript(javascript);
600 if (i + 1 < m_pAccessors->GetSize()) { 593 if (i + 1 < m_pAccessors.size()) {
601 javascript << FX_WSTRC(L", "); 594 javascript << FX_WSTRC(L", ");
602 } 595 }
603 } 596 }
604 javascript << FX_WSTRC(L");\n"); 597 javascript << FX_WSTRC(L");\n");
605 javascript << FX_WSTRC(L"var "); 598 javascript << FX_WSTRC(L"var ");
606 javascript << RUNTIMEBLOCKTEMPARRAYINDEX; 599 javascript << RUNTIMEBLOCKTEMPARRAYINDEX;
607 javascript << FX_WSTRC(L" = 0;\n"); 600 javascript << FX_WSTRC(L" = 0;\n");
608 javascript << FX_WSTRC(L"while("); 601 javascript << FX_WSTRC(L"while(");
609 javascript << RUNTIMEBLOCKTEMPARRAYINDEX; 602 javascript << RUNTIMEBLOCKTEMPARRAYINDEX;
610 javascript << FX_WSTRC(L" < "); 603 javascript << FX_WSTRC(L" < ");
611 javascript << RUNTIMEBLOCKTEMPARRAY; 604 javascript << RUNTIMEBLOCKTEMPARRAY;
612 javascript << FX_WSTRC(L".length)\n{\n"); 605 javascript << FX_WSTRC(L".length)\n{\n");
613 if (m_wsIdentifier.GetAt(0) == L'!') { 606 if (m_wsIdentifier.GetAt(0) == L'!') {
614 CFX_WideString tempIdentifier = 607 CFX_WideString tempIdentifier =
615 EXCLAMATION_IN_IDENTIFIER + m_wsIdentifier.Mid(1); 608 EXCLAMATION_IN_IDENTIFIER + m_wsIdentifier.Mid(1);
616 javascript << tempIdentifier; 609 javascript << tempIdentifier;
617 } else { 610 } else {
618 javascript << m_wsIdentifier; 611 javascript << m_wsIdentifier;
619 } 612 }
620 javascript << FX_WSTRC(L" = "); 613 javascript << FX_WSTRC(L" = ");
621 javascript << RUNTIMEBLOCKTEMPARRAY; 614 javascript << RUNTIMEBLOCKTEMPARRAY;
622 javascript << FX_WSTRC(L"["); 615 javascript << FX_WSTRC(L"[");
623 javascript << RUNTIMEBLOCKTEMPARRAYINDEX; 616 javascript << RUNTIMEBLOCKTEMPARRAYINDEX;
624 javascript << FX_WSTRC(L"++];\n"); 617 javascript << FX_WSTRC(L"++];\n");
625 m_pList->ToImpliedReturnJS(javascript); 618 m_pList->ToImpliedReturnJS(javascript);
626 javascript << FX_WSTRC(L"}\n"); 619 javascript << FX_WSTRC(L"}\n");
627 javascript << FX_WSTRC(L"}\n"); 620 javascript << FX_WSTRC(L"}\n");
628 } 621 }
OLDNEW
« no previous file with comments | « xfa/fxfa/fm2js/xfa_expression.h ('k') | xfa/fxfa/fm2js/xfa_fmparse.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698