Remove CFX_StackTemplate<FDE_CANVASITEM>

Change-Id: I2dbea7665b5fc2ca239ad2f75c91d4a1e0d522c7
Reviewed-on: https://pdfium-review.googlesource.com/2911
Reviewed-by: dsinclair <dsinclair@chromium.org>
Commit-Queue: dsinclair <dsinclair@chromium.org>
diff --git a/xfa/fde/fde_iterator.cpp b/xfa/fde/fde_iterator.cpp
index 9ca02da..9c1adf6 100644
--- a/xfa/fde/fde_iterator.cpp
+++ b/xfa/fde/fde_iterator.cpp
@@ -8,17 +8,14 @@
 
 #include "xfa/fgas/crt/fgas_utils.h"
 
-CFDE_VisualSetIterator::CFDE_VisualSetIterator()
-    : m_dwFilter(0), m_CanvasStack(100) {}
+CFDE_VisualSetIterator::CFDE_VisualSetIterator() : m_dwFilter(0) {}
 
-CFDE_VisualSetIterator::~CFDE_VisualSetIterator() {
-  m_CanvasStack.RemoveAll(false);
-}
+CFDE_VisualSetIterator::~CFDE_VisualSetIterator() {}
 
 bool CFDE_VisualSetIterator::AttachCanvas(IFDE_CanvasSet* pCanvas) {
   ASSERT(pCanvas);
+  m_CanvasStack = std::stack<FDE_CANVASITEM>();
 
-  m_CanvasStack.RemoveAll(false);
   FDE_CANVASITEM canvas;
   canvas.hCanvas = nullptr;
   canvas.pCanvas = pCanvas;
@@ -26,19 +23,20 @@
   if (!canvas.hPos)
     return false;
 
-  return m_CanvasStack.Push(canvas) == 0;
+  m_CanvasStack.push(canvas);
+  return true;
 }
 
 bool CFDE_VisualSetIterator::FilterObjects(uint32_t dwObjects) {
-  if (m_CanvasStack.GetSize() == 0)
+  if (m_CanvasStack.empty())
     return false;
 
-  while (m_CanvasStack.GetSize() > 1)
-    m_CanvasStack.Pop();
+  while (m_CanvasStack.size() > 1)
+    m_CanvasStack.pop();
 
   m_dwFilter = dwObjects;
 
-  FDE_CANVASITEM* pCanvas = m_CanvasStack.GetTopElement();
+  FDE_CANVASITEM* pCanvas = &m_CanvasStack.top();
   ASSERT(pCanvas && pCanvas->pCanvas);
 
   pCanvas->hPos = pCanvas->pCanvas->GetFirstPosition();
@@ -53,15 +51,13 @@
     IFDE_VisualSet*& pVisualSet,
     FDE_TEXTEDITPIECE** phCanvasObj,
     IFDE_CanvasSet** ppCanvasSet) {
-  while (m_CanvasStack.GetSize() > 0) {
-    FDE_CANVASITEM* pCanvas = m_CanvasStack.GetTopElement();
-    ASSERT(pCanvas && pCanvas->pCanvas);
-
+  while (!m_CanvasStack.empty()) {
+    FDE_CANVASITEM* pCanvas = &m_CanvasStack.top();
     if (!pCanvas->hPos) {
-      if (m_CanvasStack.GetSize() == 1)
+      if (m_CanvasStack.size() == 1)
         break;
 
-      m_CanvasStack.Pop();
+      m_CanvasStack.pop();
       continue;
     }
     do {
@@ -75,7 +71,7 @@
         canvas.hCanvas = pObj;
         canvas.pCanvas = static_cast<IFDE_CanvasSet*>(pVisualSet);
         canvas.hPos = canvas.pCanvas->GetFirstPosition();
-        m_CanvasStack.Push(canvas);
+        m_CanvasStack.push(canvas);
         break;
       }
       uint32_t dwObj = (uint32_t)eType;
diff --git a/xfa/fde/fde_iterator.h b/xfa/fde/fde_iterator.h
index 45659ce..a2cd931 100644
--- a/xfa/fde/fde_iterator.h
+++ b/xfa/fde/fde_iterator.h
@@ -7,6 +7,8 @@
 #ifndef XFA_FDE_FDE_ITERATOR_H_
 #define XFA_FDE_FDE_ITERATOR_H_
 
+#include <stack>
+
 #include "xfa/fde/fde_visualset.h"
 #include "xfa/fgas/crt/fgas_utils.h"
 
@@ -31,7 +33,7 @@
 
  protected:
   uint32_t m_dwFilter;
-  CFX_StackTemplate<FDE_CANVASITEM> m_CanvasStack;
+  std::stack<FDE_CANVASITEM> m_CanvasStack;
 };
 
 #endif  // XFA_FDE_FDE_ITERATOR_H_