Cleanup fgas/crt.

This CL removes unused methods and default parameters from the fgas/crt code.

Review-Url: https://codereview.chromium.org/2162503003
diff --git a/xfa/fde/cfde_txtedtpage.cpp b/xfa/fde/cfde_txtedtpage.cpp
index 3af29f2..a31997f 100644
--- a/xfa/fde/cfde_txtedtpage.cpp
+++ b/xfa/fde/cfde_txtedtpage.cpp
@@ -30,6 +30,7 @@
 
 CFDE_TxtEdtPage::CFDE_TxtEdtPage(CFDE_TxtEdtEngine* pEngine, int32_t nPageIndex)
     : m_pTextSet(nullptr),
+      m_PieceMassArr(100),
       m_pBgnParag(nullptr),
       m_pEndParag(nullptr),
       m_nRefCount(0),
@@ -446,7 +447,7 @@
   if (m_nRefCount != 0)
     return;
 
-  m_PieceMassArr.RemoveAll();
+  m_PieceMassArr.RemoveAll(FALSE);
   delete m_pTextSet;
   m_pTextSet = nullptr;
   delete[] m_pCharWidth;
diff --git a/xfa/fde/css/fde_css.h b/xfa/fde/css/fde_css.h
index a0ede3d..74a0ef6 100644
--- a/xfa/fde/css/fde_css.h
+++ b/xfa/fde/css/fde_css.h
@@ -718,8 +718,6 @@
   virtual FDE_CSSRULETYPE GetType() const = 0;
 };
 
-typedef CFX_MassArrayTemplate<IFDE_CSSRule*> CFDE_CSSRuleArray;
-
 class IFDE_CSSStyleRule : public IFDE_CSSRule {
  public:
   // IFDE_CSSValue
diff --git a/xfa/fde/css/fde_csscache.cpp b/xfa/fde/css/fde_csscache.cpp
index a355a43..2343c99 100644
--- a/xfa/fde/css/fde_csscache.cpp
+++ b/xfa/fde/css/fde_csscache.cpp
@@ -53,12 +53,12 @@
       iClassIndex(0),
       dwClassHashs(1) {
   if (it.dwClassHashs.GetSize() > 0)
-    dwClassHashs.Copy(it.dwClassHashs);
+    dwClassHashs.Copy(it.dwClassHashs, 0, -1);
 }
 
 FDE_CSSTagCache::~FDE_CSSTagCache() {}
 
-CFDE_CSSAccelerator::CFDE_CSSAccelerator() {}
+CFDE_CSSAccelerator::CFDE_CSSAccelerator() : m_Stack(100) {}
 
 CFDE_CSSAccelerator::~CFDE_CSSAccelerator() {}
 
diff --git a/xfa/fde/css/fde_csscache.h b/xfa/fde/css/fde_csscache.h
index bab86ea..8f4f2a7 100644
--- a/xfa/fde/css/fde_csscache.h
+++ b/xfa/fde/css/fde_csscache.h
@@ -49,7 +49,6 @@
   int32_t iClassIndex;
   CFX_BaseArrayTemplate<uint32_t> dwClassHashs;
 };
-typedef CFX_ObjectStackTemplate<FDE_CSSTagCache> CFDE_CSSTagStack;
 
 class CFDE_CSSAccelerator : public CFX_Target {
  public:
@@ -59,12 +58,12 @@
   void OnEnterTag(CXFA_CSSTagProvider* pTag);
   void OnLeaveTag(CXFA_CSSTagProvider* pTag);
 
-  void Clear() { m_Stack.RemoveAll(); }
+  void Clear() { m_Stack.RemoveAll(FALSE); }
 
   FDE_CSSTagCache* GetTopElement() const { return m_Stack.GetTopElement(); }
 
  protected:
-  CFDE_CSSTagStack m_Stack;
+  CFX_ObjectStackTemplate<FDE_CSSTagCache> m_Stack;
 };
 
 #endif  // XFA_FDE_CSS_FDE_CSSCACHE_H_
diff --git a/xfa/fde/css/fde_cssstylesheet.cpp b/xfa/fde/css/fde_cssstylesheet.cpp
index 87137c4..99beab8 100644
--- a/xfa/fde/css/fde_cssstylesheet.cpp
+++ b/xfa/fde/css/fde_cssstylesheet.cpp
@@ -78,7 +78,8 @@
     : m_wCodePage(FX_CODEPAGE_UTF8),
       m_wRefCount(1),
       m_dwMediaList(dwMediaList),
-      m_pAllocator(nullptr) {
+      m_pAllocator(nullptr),
+      m_RuleArray(100) {
   ASSERT(m_dwMediaList > 0);
 }
 
@@ -104,7 +105,7 @@
         break;
     }
   }
-  m_RuleArray.RemoveAll();
+  m_RuleArray.RemoveAll(FALSE);
   m_Selectors.RemoveAll();
   m_StringCache.clear();
   delete m_pAllocator;
@@ -241,7 +242,7 @@
 
 FDE_CSSSYNTAXSTATUS CFDE_CSSStyleSheet::LoadStyleRule(
     CFDE_CSSSyntaxParser* pSyntax,
-    CFDE_CSSRuleArray& ruleArray) {
+    CFX_MassArrayTemplate<IFDE_CSSRule*>& ruleArray) {
   m_Selectors.RemoveAt(0, m_Selectors.GetSize());
   CFDE_CSSStyleRule* pStyleRule = nullptr;
   const FX_WCHAR* pszValue = nullptr;
@@ -306,7 +307,7 @@
 
 FDE_CSSSYNTAXSTATUS CFDE_CSSStyleSheet::LoadFontFaceRule(
     CFDE_CSSSyntaxParser* pSyntax,
-    CFDE_CSSRuleArray& ruleArray) {
+    CFX_MassArrayTemplate<IFDE_CSSRule*>& ruleArray) {
   CFDE_CSSFontFaceRule* pFontFaceRule = nullptr;
   const FX_WCHAR* pszValue = nullptr;
   int32_t iValueLen = 0;
@@ -392,8 +393,9 @@
   return &m_Declaration;
 }
 
-void CFDE_CSSStyleRule::SetSelector(IFX_MemoryAllocator* pStaticStore,
-                                    const CFDE_CSSSelectorArray& list) {
+void CFDE_CSSStyleRule::SetSelector(
+    IFX_MemoryAllocator* pStaticStore,
+    const CFX_ArrayTemplate<CFDE_CSSSelector*>& list) {
   ASSERT(!m_ppSelector);
   m_iSelectors = list.GetSize();
   m_ppSelector = static_cast<CFDE_CSSSelector**>(
@@ -404,7 +406,7 @@
 }
 
 CFDE_CSSMediaRule::CFDE_CSSMediaRule(uint32_t dwMediaList)
-    : m_dwMediaList(dwMediaList) {}
+    : m_dwMediaList(dwMediaList), m_RuleArray(100) {}
 
 CFDE_CSSMediaRule::~CFDE_CSSMediaRule() {
   for (int32_t i = m_RuleArray.GetSize() - 1; i >= 0; --i) {
diff --git a/xfa/fde/css/fde_cssstylesheet.h b/xfa/fde/css/fde_cssstylesheet.h
index 83eac99..d4781f8 100644
--- a/xfa/fde/css/fde_cssstylesheet.h
+++ b/xfa/fde/css/fde_cssstylesheet.h
@@ -39,8 +39,6 @@
   CFDE_CSSSelector* m_pNext;
 };
 
-typedef CFX_ArrayTemplate<CFDE_CSSSelector*> CFDE_CSSSelectorArray;
-
 class CFDE_CSSStyleRule : public IFDE_CSSStyleRule, public CFX_Target {
  public:
   CFDE_CSSStyleRule();
@@ -52,7 +50,7 @@
 
   CFDE_CSSDeclaration& GetDeclImp() { return m_Declaration; }
   void SetSelector(IFX_MemoryAllocator* pStaticStore,
-                   const CFDE_CSSSelectorArray& list);
+                   const CFX_ArrayTemplate<CFDE_CSSSelector*>& list);
 
  protected:
   CFDE_CSSDeclaration m_Declaration;
@@ -70,11 +68,11 @@
   int32_t CountRules() const override;
   IFDE_CSSRule* GetRule(int32_t index) override;
 
-  CFDE_CSSRuleArray& GetArray() { return m_RuleArray; }
+  CFX_MassArrayTemplate<IFDE_CSSRule*>& GetArray() { return m_RuleArray; }
 
  protected:
   uint32_t m_dwMediaList;
-  CFDE_CSSRuleArray m_RuleArray;
+  CFX_MassArrayTemplate<IFDE_CSSRule*> m_RuleArray;
 };
 
 class CFDE_CSSFontFaceRule : public IFDE_CSSFontFaceRule, public CFX_Target {
@@ -122,21 +120,23 @@
  protected:
   void Reset();
   FX_BOOL LoadFromSyntax(CFDE_CSSSyntaxParser* pSyntax);
-  FDE_CSSSYNTAXSTATUS LoadStyleRule(CFDE_CSSSyntaxParser* pSyntax,
-                                    CFDE_CSSRuleArray& ruleArray);
+  FDE_CSSSYNTAXSTATUS LoadStyleRule(
+      CFDE_CSSSyntaxParser* pSyntax,
+      CFX_MassArrayTemplate<IFDE_CSSRule*>& ruleArray);
   FDE_CSSSYNTAXSTATUS LoadImportRule(CFDE_CSSSyntaxParser* pSyntax);
   FDE_CSSSYNTAXSTATUS LoadPageRule(CFDE_CSSSyntaxParser* pSyntax);
   FDE_CSSSYNTAXSTATUS LoadMediaRule(CFDE_CSSSyntaxParser* pSyntax);
-  FDE_CSSSYNTAXSTATUS LoadFontFaceRule(CFDE_CSSSyntaxParser* pSyntax,
-                                       CFDE_CSSRuleArray& ruleArray);
+  FDE_CSSSYNTAXSTATUS LoadFontFaceRule(
+      CFDE_CSSSyntaxParser* pSyntax,
+      CFX_MassArrayTemplate<IFDE_CSSRule*>& ruleArray);
   FDE_CSSSYNTAXSTATUS SkipRuleSet(CFDE_CSSSyntaxParser* pSyntax);
   uint16_t m_wCodePage;
   uint16_t m_wRefCount;
   uint32_t m_dwMediaList;
   IFX_MemoryAllocator* m_pAllocator;
-  CFDE_CSSRuleArray m_RuleArray;
+  CFX_MassArrayTemplate<IFDE_CSSRule*> m_RuleArray;
   CFX_WideString m_szUrl;
-  CFDE_CSSSelectorArray m_Selectors;
+  CFX_ArrayTemplate<CFDE_CSSSelector*> m_Selectors;
   std::unordered_map<uint32_t, FX_WCHAR*> m_StringCache;
 };
 
diff --git a/xfa/fde/css/fde_csssyntax.cpp b/xfa/fde/css/fde_csssyntax.cpp
index 4595396..c2b0265 100644
--- a/xfa/fde/css/fde_csssyntax.cpp
+++ b/xfa/fde/css/fde_csssyntax.cpp
@@ -25,11 +25,14 @@
       m_iTextDatLen(0),
       m_dwCheck((uint32_t)-1),
       m_eMode(FDE_CSSSYNTAXMODE_RuleSet),
-      m_eStatus(FDE_CSSSYNTAXSTATUS_None) {}
+      m_eStatus(FDE_CSSSYNTAXSTATUS_None),
+      m_ModeStack(100) {}
+
 CFDE_CSSSyntaxParser::~CFDE_CSSSyntaxParser() {
   m_TextData.Reset();
   m_TextPlane.Reset();
 }
+
 FX_BOOL CFDE_CSSSyntaxParser::Init(IFX_Stream* pStream,
                                    int32_t iCSSPlaneSize,
                                    int32_t iTextDataSize,
diff --git a/xfa/fde/fde_iterator.cpp b/xfa/fde/fde_iterator.cpp
index 6e8ca00..a51b8ad 100644
--- a/xfa/fde/fde_iterator.cpp
+++ b/xfa/fde/fde_iterator.cpp
@@ -8,16 +8,17 @@
 
 #include "xfa/fgas/crt/fgas_utils.h"
 
-CFDE_VisualSetIterator::CFDE_VisualSetIterator() : m_dwFilter(0) {}
+CFDE_VisualSetIterator::CFDE_VisualSetIterator()
+    : m_dwFilter(0), m_CanvasStack(100) {}
 
 CFDE_VisualSetIterator::~CFDE_VisualSetIterator() {
-  m_CanvasStack.RemoveAll();
+  m_CanvasStack.RemoveAll(FALSE);
 }
 
 FX_BOOL CFDE_VisualSetIterator::AttachCanvas(IFDE_CanvasSet* pCanvas) {
   ASSERT(pCanvas);
 
-  m_CanvasStack.RemoveAll();
+  m_CanvasStack.RemoveAll(FALSE);
   FDE_CANVASITEM canvas;
   canvas.hCanvas = nullptr;
   canvas.pCanvas = pCanvas;
diff --git a/xfa/fde/tto/fde_textout.cpp b/xfa/fde/tto/fde_textout.cpp
index b0c4bdd..a29a420 100644
--- a/xfa/fde/tto/fde_textout.cpp
+++ b/xfa/fde/tto/fde_textout.cpp
@@ -51,7 +51,7 @@
   FX_Free(m_pCharWidths);
   FX_Free(m_pEllCharWidths);
   FX_Free(m_pCharPos);
-  m_ttoLines.RemoveAll();
+  m_ttoLines.RemoveAll(FALSE);
 }
 void CFDE_TextOut::SetFont(CFGAS_GEFont* pFont) {
   ASSERT(pFont);
@@ -907,7 +907,7 @@
 CFDE_TTOLine::CFDE_TTOLine(const CFDE_TTOLine& ttoLine) : m_pieces(5) {
   m_bNewReload = ttoLine.m_bNewReload;
   m_iPieceCount = ttoLine.m_iPieceCount;
-  m_pieces.Copy(ttoLine.m_pieces);
+  m_pieces.Copy(ttoLine.m_pieces, 0, -1);
 }
 
 CFDE_TTOLine::~CFDE_TTOLine() {}
diff --git a/xfa/fde/xml/fde_xml_imp.cpp b/xfa/fde/xml/fde_xml_imp.cpp
index da7e0a2..4c6dcf9 100644
--- a/xfa/fde/xml/fde_xml_imp.cpp
+++ b/xfa/fde/xml/fde_xml_imp.cpp
@@ -625,7 +625,7 @@
   int32_t iCount = m_Attributes.GetSize();
   for (int32_t i = 0; i < iCount; i += 2) {
     if (m_Attributes[i].Compare(pwsAttriName) == 0) {
-      return FX_wcstof(m_Attributes[i + 1].c_str());
+      return FX_wcstof(m_Attributes[i + 1].c_str(), -1, nullptr);
     }
   }
   return fDefValue;
@@ -841,7 +841,7 @@
   int32_t iCount = m_Attributes.GetSize();
   for (int32_t i = 0; i < iCount; i += 2) {
     if (m_Attributes[i].Compare(pwsAttriName) == 0) {
-      return FX_wcstof(m_Attributes[i + 1].c_str());
+      return FX_wcstof(m_Attributes[i + 1].c_str(), -1, nullptr);
     }
   }
   return fDefValue;
diff --git a/xfa/fde/xml/fde_xml_imp.h b/xfa/fde/xml/fde_xml_imp.h
index 2667a10..b7892d6 100644
--- a/xfa/fde/xml/fde_xml_imp.h
+++ b/xfa/fde/xml/fde_xml_imp.h
@@ -344,7 +344,7 @@
   FDE_XmlSyntaxState m_syntaxParserState;
   FX_WCHAR m_wQuotationMark;
   int32_t m_iEntityStart;
-  CFX_DWordStack m_SkipStack;
+  CFX_StackTemplate<uint32_t> m_SkipStack;
   FX_WCHAR m_SkipChar;
 };
 
diff --git a/xfa/fgas/crt/fgas_codepage.cpp b/xfa/fgas/crt/fgas_codepage.cpp
index 834056e..57f3e1e 100644
--- a/xfa/fgas/crt/fgas_codepage.cpp
+++ b/xfa/fgas/crt/fgas_codepage.cpp
@@ -35,16 +35,6 @@
     {255, 850},
 };
 
-const FX_CHARSET_MAP g_FXCodepage2CharsetTable[] = {
-    {1, 0},      {2, 42},     {254, 437},  {255, 850},  {222, 874},
-    {128, 932},  {134, 936},  {129, 949},  {136, 950},  {238, 1250},
-    {204, 1251}, {0, 1252},   {161, 1253}, {162, 1254}, {177, 1255},
-    {178, 1256}, {186, 1257}, {163, 1258}, {130, 1361}, {77, 10000},
-    {78, 10001}, {79, 10003}, {80, 10008}, {81, 10002}, {83, 10005},
-    {84, 10004}, {85, 10006}, {86, 10081}, {87, 10021}, {88, 10029},
-    {89, 10007},
-};
-
 const FX_LANG2CPMAP g_FXLang2CodepageTable[] = {
     {FX_LANG_Arabic_SaudiArabia, FX_CODEPAGE_MSWin_Arabic},
     {FX_LANG_Bulgarian_Bulgaria, FX_CODEPAGE_MSWin_Cyrillic},
@@ -317,24 +307,6 @@
   return 0xFFFF;
 }
 
-uint16_t FX_GetCharsetFromCodePage(uint16_t codepage) {
-  int32_t iEnd = sizeof(g_FXCodepage2CharsetTable) / sizeof(FX_CHARSET_MAP) - 1;
-  ASSERT(iEnd >= 0);
-  int32_t iStart = 0, iMid;
-  do {
-    iMid = (iStart + iEnd) / 2;
-    const FX_CHARSET_MAP& cp = g_FXCodepage2CharsetTable[iMid];
-    if (codepage == cp.codepage) {
-      return cp.charset;
-    } else if (codepage < cp.codepage) {
-      iEnd = iMid - 1;
-    } else {
-      iStart = iMid + 1;
-    }
-  } while (iStart <= iEnd);
-  return 0xFFFF;
-}
-
 uint16_t FX_GetDefCodePageByLanguage(uint16_t wLanguage) {
   int32_t iEnd = sizeof(g_FXLang2CodepageTable) / sizeof(FX_LANG2CPMAP) - 1;
   ASSERT(iEnd >= 0);
@@ -403,18 +375,6 @@
   }
 }
 
-void FX_WCharToUTF16(void* pBuffer, int32_t iLength) {
-  ASSERT(pBuffer && iLength > 0);
-  if (sizeof(FX_WCHAR) == 2) {
-    return;
-  }
-  const FX_WCHAR* pSrc = (const FX_WCHAR*)pBuffer;
-  uint16_t* pDst = (uint16_t*)pBuffer;
-  while (--iLength >= 0) {
-    *pDst++ = (uint16_t)*pSrc++;
-  }
-}
-
 int32_t FX_DecodeString(uint16_t wCodePage,
                         const FX_CHAR* pSrc,
                         int32_t* pSrcLen,
diff --git a/xfa/fgas/crt/fgas_codepage.h b/xfa/fgas/crt/fgas_codepage.h
index 5d867fe..78aee83 100644
--- a/xfa/fgas/crt/fgas_codepage.h
+++ b/xfa/fgas/crt/fgas_codepage.h
@@ -134,19 +134,17 @@
 #define FX_CHARSET_OEM 255
 
 uint16_t FX_GetCodePageFromCharset(uint8_t charset);
-uint16_t FX_GetCharsetFromCodePage(uint16_t codepage);
 uint16_t FX_GetCodePageFromStringW(const FX_WCHAR* pStr, int32_t iLength);
 uint16_t FX_GetDefCodePageByLanguage(uint16_t wLanguage);
 void FX_SwapByteOrder(FX_WCHAR* pStr, int32_t iLength);
 
 void FX_UTF16ToWChar(void* pBuffer, int32_t iLength);
-void FX_WCharToUTF16(void* pBuffer, int32_t iLength);
 int32_t FX_DecodeString(uint16_t wCodePage,
                         const FX_CHAR* pSrc,
                         int32_t* pSrcLen,
                         FX_WCHAR* pDst,
                         int32_t* pDstLen,
-                        FX_BOOL bErrBreak = FALSE);
+                        FX_BOOL bErrBreak);
 int32_t FX_UTF8Decode(const FX_CHAR* pSrc,
                       int32_t* pSrcLen,
                       FX_WCHAR* pDst,
diff --git a/xfa/fgas/crt/fgas_stream.cpp b/xfa/fgas/crt/fgas_stream.cpp
index dd54fbe..25d8514 100644
--- a/xfa/fgas/crt/fgas_stream.cpp
+++ b/xfa/fgas/crt/fgas_stream.cpp
@@ -227,8 +227,7 @@
   int32_t ReadData(uint8_t* pBuffer, int32_t iBufferSize) override;
   int32_t ReadString(FX_WCHAR* pStr,
                      int32_t iMaxLength,
-                     FX_BOOL& bEOS,
-                     int32_t const* pByteSize = nullptr) override;
+                     FX_BOOL& bEOS) override;
   int32_t WriteData(const uint8_t* pBuffer, int32_t iBufferSize) override;
   int32_t WriteString(const FX_WCHAR* pStr, int32_t iLength) override;
   void Flush() override;
@@ -267,8 +266,7 @@
   int32_t ReadData(uint8_t* pBuffer, int32_t iBufferSize) override;
   int32_t ReadString(FX_WCHAR* pStr,
                      int32_t iMaxLength,
-                     FX_BOOL& bEOS,
-                     int32_t const* pByteSize = nullptr) override;
+                     FX_BOOL& bEOS) override;
   int32_t WriteData(const uint8_t* pBuffer, int32_t iBufferSize) override;
   int32_t WriteString(const FX_WCHAR* pStr, int32_t iLength) override;
   void Flush() override;
@@ -338,21 +336,7 @@
 
 }  // namespace
 
-IFX_Stream* IFX_Stream::CreateStream(IFX_BufferRead* pBufferRead,
-                                     uint32_t dwAccess,
-                                     int32_t iFileSize,
-                                     FX_BOOL bReleaseBufferRead) {
-  CFX_Stream* pSR = new CFX_Stream;
-  if (!pSR->LoadBufferRead(pBufferRead, iFileSize, dwAccess,
-                           bReleaseBufferRead)) {
-    pSR->Release();
-    return nullptr;
-  }
-  if (dwAccess & FX_STREAMACCESS_Text) {
-    return new CFX_TextStream(pSR, TRUE);
-  }
-  return pSR;
-}
+// static
 IFX_Stream* IFX_Stream::CreateStream(IFX_FileRead* pFileRead,
                                      uint32_t dwAccess) {
   CFX_Stream* pSR = new CFX_Stream;
@@ -365,6 +349,8 @@
   }
   return pSR;
 }
+
+// static
 IFX_Stream* IFX_Stream::CreateStream(IFX_FileWrite* pFileWrite,
                                      uint32_t dwAccess) {
   CFX_Stream* pSR = new CFX_Stream;
@@ -377,18 +363,8 @@
   }
   return pSR;
 }
-IFX_Stream* IFX_Stream::CreateStream(const FX_WCHAR* pszFileName,
-                                     uint32_t dwAccess) {
-  CFX_Stream* pSR = new CFX_Stream;
-  if (!pSR->LoadFile(pszFileName, dwAccess)) {
-    pSR->Release();
-    return nullptr;
-  }
-  if (dwAccess & FX_STREAMACCESS_Text) {
-    return new CFX_TextStream(pSR, TRUE);
-  }
-  return pSR;
-}
+
+// static
 IFX_Stream* IFX_Stream::CreateStream(uint8_t* pData,
                                      int32_t length,
                                      uint32_t dwAccess) {
@@ -932,11 +908,14 @@
   }
   return iLen;
 }
+
+// static
 IFX_Stream* IFX_Stream::CreateTextStream(IFX_Stream* pBaseStream,
                                          FX_BOOL bDeleteOnRelease) {
   ASSERT(pBaseStream);
   return new CFX_TextStream(pBaseStream, bDeleteOnRelease);
 }
+
 CFX_TextStream::CFX_TextStream(IFX_Stream* pStream, FX_BOOL bDelStream)
     : m_wCodePage(FX_CODEPAGE_DefANSI),
       m_wBOMLength(0),
@@ -1073,8 +1052,7 @@
 }
 int32_t CFX_TextStream::ReadString(FX_WCHAR* pStr,
                                    int32_t iMaxLength,
-                                   FX_BOOL& bEOS,
-                                   int32_t const* pByteSize) {
+                                   FX_BOOL& bEOS) {
   ASSERT(pStr && iMaxLength > 0);
   if (!m_pStreamImp) {
     return -1;
@@ -1082,7 +1060,7 @@
   int32_t iLen;
   if (m_wCodePage == FX_CODEPAGE_UTF16LE ||
       m_wCodePage == FX_CODEPAGE_UTF16BE) {
-    int32_t iBytes = pByteSize ? *pByteSize : iMaxLength * 2;
+    int32_t iBytes = iMaxLength * 2;
     iLen = m_pStreamImp->ReadData((uint8_t*)pStr, iBytes);
     iMaxLength = iLen / 2;
     if (sizeof(FX_WCHAR) > 2) {
@@ -1099,7 +1077,7 @@
 #endif
   } else {
     int32_t pos = m_pStreamImp->GetPosition();
-    int32_t iBytes = pByteSize ? *pByteSize : iMaxLength;
+    int32_t iBytes = iMaxLength;
     iBytes = std::min(iBytes, m_pStreamImp->GetLength() - pos);
     if (iBytes > 0) {
       if (!m_pBuf) {
@@ -1341,17 +1319,13 @@
 }
 int32_t CFX_Stream::ReadString(FX_WCHAR* pStr,
                                int32_t iMaxLength,
-                               FX_BOOL& bEOS,
-                               int32_t const* pByteSize) {
+                               FX_BOOL& bEOS) {
   ASSERT(pStr && iMaxLength > 0);
   if (!m_pStreamImp) {
     return -1;
   }
   int32_t iEnd = m_iStart + m_iLength;
   int32_t iLen = iEnd - m_iPosition;
-  if (pByteSize) {
-    iLen = std::min(iLen, *pByteSize);
-  }
   iLen = std::min(iEnd / 2, iMaxLength);
   if (iLen <= 0) {
     return 0;
diff --git a/xfa/fgas/crt/fgas_stream.h b/xfa/fgas/crt/fgas_stream.h
index 5cd2a3d..443e8c7 100644
--- a/xfa/fgas/crt/fgas_stream.h
+++ b/xfa/fgas/crt/fgas_stream.h
@@ -13,7 +13,7 @@
 class IFX_Stream;
 
 IFX_FileRead* FX_CreateFileRead(IFX_Stream* pBaseStream,
-                                FX_BOOL bReleaseStream = FALSE);
+                                FX_BOOL bReleaseStream);
 
 enum FX_STREAMACCESS {
   FX_STREAMACCESS_Binary = 0x00,
@@ -35,20 +35,19 @@
  public:
   static IFX_Stream* CreateStream(IFX_FileRead* pFileRead, uint32_t dwAccess);
   static IFX_Stream* CreateStream(IFX_FileWrite* pFileWrite, uint32_t dwAccess);
-  static IFX_Stream* CreateStream(const FX_WCHAR* pszFileName,
-                                  uint32_t dwAccess);
   static IFX_Stream* CreateStream(uint8_t* pData,
                                   int32_t length,
                                   uint32_t dwAccess);
-  static IFX_Stream* CreateStream(IFX_BufferRead* pBufferRead,
-                                  uint32_t dwAccess,
-                                  int32_t iFileSize = -1,
-                                  FX_BOOL bReleaseBufferRead = TRUE);
   static IFX_Stream* CreateTextStream(IFX_Stream* pBaseStream,
                                       FX_BOOL bDeleteOnRelease);
   virtual ~IFX_Stream() {}
   virtual void Release() = 0;
   virtual IFX_Stream* Retain() = 0;
+
+  virtual IFX_Stream* CreateSharedStream(uint32_t dwAccess,
+                                         int32_t iOffset,
+                                         int32_t iLength) = 0;
+
   virtual uint32_t GetAccessModes() const = 0;
   virtual int32_t GetLength() const = 0;
   virtual int32_t Seek(FX_STREAMSEEK eSeek, int32_t iOffset) = 0;
@@ -57,8 +56,7 @@
   virtual int32_t ReadData(uint8_t* pBuffer, int32_t iBufferSize) = 0;
   virtual int32_t ReadString(FX_WCHAR* pStr,
                              int32_t iMaxLength,
-                             FX_BOOL& bEOS,
-                             int32_t const* pByteSize = nullptr) = 0;
+                             FX_BOOL& bEOS) = 0;
   virtual int32_t WriteData(const uint8_t* pBuffer, int32_t iBufferSize) = 0;
   virtual int32_t WriteString(const FX_WCHAR* pStr, int32_t iLength) = 0;
   virtual void Flush() = 0;
@@ -66,9 +64,6 @@
   virtual int32_t GetBOM(uint8_t bom[4]) const = 0;
   virtual uint16_t GetCodePage() const = 0;
   virtual uint16_t SetCodePage(uint16_t wCodePage) = 0;
-  virtual IFX_Stream* CreateSharedStream(uint32_t dwAccess,
-                                         int32_t iOffset,
-                                         int32_t iLength) = 0;
 };
 
 #endif  // XFA_FGAS_CRT_FGAS_STREAM_H_
diff --git a/xfa/fgas/crt/fgas_system.h b/xfa/fgas/crt/fgas_system.h
index 83c6773..6cf628f 100644
--- a/xfa/fgas/crt/fgas_system.h
+++ b/xfa/fgas/crt/fgas_system.h
@@ -9,9 +9,7 @@
 
 #include "core/fxcrt/include/fx_system.h"
 
-FX_FLOAT FX_wcstof(const FX_WCHAR* pwsStr,
-                   int32_t iLength = -1,
-                   int32_t* pUsedLen = nullptr);
+FX_FLOAT FX_wcstof(const FX_WCHAR* pwsStr, int32_t iLength, int32_t* pUsedLen);
 int32_t FX_wcsnicmp(const FX_WCHAR* s1, const FX_WCHAR* s2, size_t count);
 
 #endif  // XFA_FGAS_CRT_FGAS_SYSTEM_H_
diff --git a/xfa/fgas/crt/fgas_utils.cpp b/xfa/fgas/crt/fgas_utils.cpp
index 7207f05..e1f7c47 100644
--- a/xfa/fgas/crt/fgas_utils.cpp
+++ b/xfa/fgas/crt/fgas_utils.cpp
@@ -38,7 +38,7 @@
   m_pData = new FX_BASEARRAYDATA(iGrowSize, iBlockSize);
 }
 CFX_BaseArray::~CFX_BaseArray() {
-  RemoveAll();
+  RemoveAll(FALSE);
   delete m_pData;
 }
 int32_t CFX_BaseArray::GetSize() const {
@@ -153,7 +153,7 @@
   m_pData->SetSize(16);
 }
 CFX_BaseMassArrayImp::~CFX_BaseMassArrayImp() {
-  RemoveAll();
+  RemoveAll(FALSE);
   delete m_pData;
 }
 uint8_t* CFX_BaseMassArrayImp::AddSpaceTo(int32_t index) {
diff --git a/xfa/fgas/crt/fgas_utils.h b/xfa/fgas/crt/fgas_utils.h
index 0cf853f..d7b7539 100644
--- a/xfa/fgas/crt/fgas_utils.h
+++ b/xfa/fgas/crt/fgas_utils.h
@@ -22,14 +22,10 @@
   uint8_t* AddSpaceTo(int32_t index);
   uint8_t* GetAt(int32_t index) const;
   uint8_t* GetBuffer() const;
-  int32_t Append(const CFX_BaseArray& src,
-                 int32_t iStart = 0,
-                 int32_t iCount = -1);
-  int32_t Copy(const CFX_BaseArray& src,
-               int32_t iStart = 0,
-               int32_t iCount = -1);
-  int32_t RemoveLast(int32_t iCount = -1);
-  void RemoveAll(FX_BOOL bLeaveMemory = FALSE);
+  int32_t Append(const CFX_BaseArray& src, int32_t iStart, int32_t iCount);
+  int32_t Copy(const CFX_BaseArray& src, int32_t iStart, int32_t iCount);
+  int32_t RemoveLast(int32_t iCount);
+  void RemoveAll(FX_BOOL bLeaveMemory);
 
   FX_BASEARRAYDATA* m_pData;
 };
@@ -37,10 +33,11 @@
 template <class baseType>
 class CFX_BaseArrayTemplate : public CFX_BaseArray {
  public:
-  CFX_BaseArrayTemplate(int32_t iGrowSize = 100)
+  CFX_BaseArrayTemplate(int32_t iGrowSize)
       : CFX_BaseArray(iGrowSize, sizeof(baseType)) {}
   CFX_BaseArrayTemplate(int32_t iGrowSize, int32_t iBlockSize)
       : CFX_BaseArray(iGrowSize, iBlockSize) {}
+
   int32_t GetSize() const { return CFX_BaseArray::GetSize(); }
   int32_t GetBlockSize() const { return CFX_BaseArray::GetBlockSize(); }
   baseType* AddSpace() {
@@ -65,119 +62,19 @@
     *(baseType*)CFX_BaseArray::AddSpaceTo(index) = element;
   }
   int32_t Append(const CFX_BaseArrayTemplate& src,
-                 int32_t iStart = 0,
-                 int32_t iCount = -1) {
+                 int32_t iStart,
+                 int32_t iCount) {
     return CFX_BaseArray::Append(src, iStart, iCount);
   }
   int32_t Copy(const CFX_BaseArrayTemplate& src,
-               int32_t iStart = 0,
-               int32_t iCount = -1) {
+               int32_t iStart,
+               int32_t iCount) {
     return CFX_BaseArray::Copy(src, iStart, iCount);
   }
-  int32_t RemoveLast(int32_t iCount = -1) {
+  int32_t RemoveLast(int32_t iCount) {
     return CFX_BaseArray::RemoveLast(iCount);
   }
-  void RemoveAll(FX_BOOL bLeaveMemory = FALSE) {
-    CFX_BaseArray::RemoveAll(bLeaveMemory);
-  }
-};
-
-template <class baseType>
-class CFX_ObjectBaseArrayTemplate : public CFX_BaseArray {
- public:
-  CFX_ObjectBaseArrayTemplate(int32_t iGrowSize = 100)
-      : CFX_BaseArray(iGrowSize, sizeof(baseType)) {}
-  ~CFX_ObjectBaseArrayTemplate() { RemoveAll(FALSE); }
-  int32_t GetSize() const { return CFX_BaseArray::GetSize(); }
-  int32_t GetBlockSize() const { return CFX_BaseArray::GetBlockSize(); }
-  int32_t Add(const baseType& element) {
-    int32_t index = CFX_BaseArray::GetSize();
-    baseType* p = (baseType*)CFX_BaseArray::AddSpaceTo(index);
-    new ((void*)p) baseType(element);
-    return index;
-  }
-  baseType& GetAt(int32_t index) const {
-    return *(baseType*)CFX_BaseArray::GetAt(index);
-  }
-  baseType* GetPtrAt(int32_t index) const {
-    return (baseType*)CFX_BaseArray::GetAt(index);
-  }
-  int32_t Append(const CFX_ObjectBaseArrayTemplate& src,
-                 int32_t iStart = 0,
-                 int32_t iCount = -1) {
-    ASSERT(GetBlockSize() == src.GetBlockSize());
-    if (iCount == 0) {
-      return 0;
-    }
-    int32_t iSize = src.GetSize();
-    ASSERT(iStart > -1 && iStart < iSize);
-    if (iCount < 0) {
-      iCount = iSize;
-    }
-    if (iStart + iCount > iSize) {
-      iCount = iSize - iStart;
-    }
-    if (iCount < 1) {
-      return 0;
-    }
-    iSize = CFX_BaseArray::GetSize();
-    CFX_BaseArray::AddSpaceTo(iSize + iCount - 1);
-    uint8_t** pStart = CFX_BaseArray::GetAt(iSize);
-    int32_t iBlockSize = CFX_BaseArray::GetBlockSize();
-    iSize = iStart + iCount;
-    for (int32_t i = iStart; i < iSize; i++) {
-      FXTARGET_NewWith((void*)pStart) baseType(src.GetAt(i));
-      pStart += iBlockSize;
-    }
-    return iCount;
-  }
-  int32_t Copy(const CFX_ObjectBaseArrayTemplate& src,
-               int32_t iStart = 0,
-               int32_t iCount = -1) {
-    ASSERT(GetBlockSize() == src.GetBlockSize());
-    if (iCount == 0) {
-      return 0;
-    }
-    int32_t iSize = src.GetSize();
-    ASSERT(iStart > -1 && iStart < iSize);
-    if (iCount < 0) {
-      iCount = iSize;
-    }
-    if (iStart + iCount > iSize) {
-      iCount = iSize - iStart;
-    }
-    if (iCount < 1) {
-      return 0;
-    }
-    RemoveAll(TRUE);
-    CFX_BaseArray::AddSpaceTo(iCount - 1);
-    uint8_t** pStart = CFX_BaseArray::GetAt(0);
-    int32_t iBlockSize = CFX_BaseArray::GetBlockSize();
-    iSize = iStart + iCount;
-    for (int32_t i = iStart; i < iSize; i++) {
-      new ((void*)pStart) baseType(src.GetAt(i));
-      pStart += iBlockSize;
-    }
-    return iCount;
-  }
-  int32_t RemoveLast(int32_t iCount = -1) {
-    int32_t iSize = CFX_BaseArray::GetSize();
-    if (iCount < 0 || iCount > iSize) {
-      iCount = iSize;
-    }
-    if (iCount == 0) {
-      return iSize;
-    }
-    for (int32_t i = iSize - iCount; i < iSize; i++) {
-      ((baseType*)GetPtrAt(i))->~baseType();
-    }
-    return CFX_BaseArray::RemoveLast(iCount);
-  }
-  void RemoveAll(FX_BOOL bLeaveMemory = FALSE) {
-    int32_t iSize = CFX_BaseArray::GetSize();
-    for (int32_t i = 0; i < iSize; i++) {
-      ((baseType*)GetPtrAt(i))->~baseType();
-    }
+  void RemoveAll(FX_BOOL bLeaveMemory) {
     CFX_BaseArray::RemoveAll(bLeaveMemory);
   }
 };
@@ -191,13 +88,11 @@
   uint8_t* AddSpaceTo(int32_t index);
   uint8_t* GetAt(int32_t index) const;
   int32_t Append(const CFX_BaseMassArrayImp& src,
-                 int32_t iStart = 0,
-                 int32_t iCount = -1);
-  int32_t Copy(const CFX_BaseMassArrayImp& src,
-               int32_t iStart = 0,
-               int32_t iCount = -1);
-  int32_t RemoveLast(int32_t iCount = -1);
-  void RemoveAll(FX_BOOL bLeaveMemory = FALSE);
+                 int32_t iStart,
+                 int32_t iCount);
+  int32_t Copy(const CFX_BaseMassArrayImp& src, int32_t iStart, int32_t iCount);
+  int32_t RemoveLast(int32_t iCount);
+  void RemoveAll(FX_BOOL bLeaveMemory);
 
   int32_t m_iChunkSize;
   int32_t m_iBlockSize;
@@ -208,8 +103,8 @@
  protected:
   void Append(int32_t iDstStart,
               const CFX_BaseMassArrayImp& src,
-              int32_t iSrcStart = 0,
-              int32_t iSrcCount = -1);
+              int32_t iSrcStart,
+              int32_t iSrcCount);
 };
 
 class CFX_BaseMassArray : public CFX_Target {
@@ -220,24 +115,21 @@
   int32_t GetSize() const;
   uint8_t* AddSpaceTo(int32_t index);
   uint8_t* GetAt(int32_t index) const;
-  int32_t Append(const CFX_BaseMassArray& src,
-                 int32_t iStart = 0,
-                 int32_t iCount = -1);
-  int32_t Copy(const CFX_BaseMassArray& src,
-               int32_t iStart = 0,
-               int32_t iCount = -1);
-  int32_t RemoveLast(int32_t iCount = -1);
-  void RemoveAll(FX_BOOL bLeaveMemory = FALSE);
+  int32_t Append(const CFX_BaseMassArray& src, int32_t iStart, int32_t iCount);
+  int32_t Copy(const CFX_BaseMassArray& src, int32_t iStart, int32_t iCount);
+  int32_t RemoveLast(int32_t iCount);
+  void RemoveAll(FX_BOOL bLeaveMemory);
   CFX_BaseMassArrayImp* m_pData;
 };
 
 template <class baseType>
 class CFX_MassArrayTemplate : public CFX_BaseMassArray {
  public:
-  CFX_MassArrayTemplate(int32_t iChunkSize = 100)
+  CFX_MassArrayTemplate(int32_t iChunkSize)
       : CFX_BaseMassArray(iChunkSize, sizeof(baseType)) {}
   CFX_MassArrayTemplate(int32_t iChunkSize, int32_t iBlockSize)
       : CFX_BaseMassArray(iChunkSize, iBlockSize) {}
+
   int32_t GetSize() const { return CFX_BaseMassArray::GetSize(); }
   baseType* AddSpace() {
     return (baseType*)CFX_BaseMassArray::AddSpaceTo(
@@ -261,19 +153,19 @@
     *(baseType*)CFX_BaseMassArray::AddSpaceTo(index) = element;
   }
   int32_t Append(const CFX_MassArrayTemplate& src,
-                 int32_t iStart = 0,
-                 int32_t iCount = -1) {
+                 int32_t iStart,
+                 int32_t iCount) {
     return CFX_BaseMassArray::Append(src, iStart, iCount);
   }
   int32_t Copy(const CFX_MassArrayTemplate& src,
-               int32_t iStart = 0,
-               int32_t iCount = -1) {
+               int32_t iStart,
+               int32_t iCount) {
     return CFX_BaseMassArray::Copy(src, iStart, iCount);
   }
-  int32_t RemoveLast(int32_t iCount = -1) {
+  int32_t RemoveLast(int32_t iCount) {
     return CFX_BaseMassArray::RemoveLast(iCount);
   }
-  void RemoveAll(FX_BOOL bLeaveMemory = FALSE) {
+  void RemoveAll(FX_BOOL bLeaveMemory) {
     CFX_BaseMassArray::RemoveAll(bLeaveMemory);
   }
 };
@@ -281,9 +173,10 @@
 template <class baseType>
 class CFX_ObjectMassArrayTemplate : public CFX_BaseMassArray {
  public:
-  CFX_ObjectMassArrayTemplate(int32_t iChunkSize = 100)
+  CFX_ObjectMassArrayTemplate(int32_t iChunkSize)
       : CFX_BaseMassArray(iChunkSize, sizeof(baseType)) {}
   ~CFX_ObjectMassArrayTemplate() { RemoveAll(FALSE); }
+
   int32_t GetSize() const { return CFX_BaseMassArray::GetSize(); }
   int32_t Add(const baseType& element) {
     int32_t index = CFX_BaseMassArray::GetSize();
@@ -298,8 +191,8 @@
     return (baseType*)CFX_BaseMassArray::GetAt(index);
   }
   int32_t Append(const CFX_ObjectMassArrayTemplate& src,
-                 int32_t iStart = 0,
-                 int32_t iCount = -1) {
+                 int32_t iStart,
+                 int32_t iCount) {
     if (iCount == 0) {
       return CFX_BaseMassArray::GetSize();
     }
@@ -318,8 +211,8 @@
     return CFX_BaseMassArray::GetSize();
   }
   int32_t Copy(const CFX_ObjectMassArrayTemplate& src,
-               int32_t iStart = 0,
-               int32_t iCount = -1) {
+               int32_t iStart,
+               int32_t iCount) {
     if (iCount == 0) {
       return CFX_BaseMassArray::GetSize();
     }
@@ -338,7 +231,7 @@
     }
     return CFX_BaseMassArray::GetSize();
   }
-  int32_t RemoveLast(int32_t iCount = -1) {
+  int32_t RemoveLast(int32_t iCount) {
     int32_t iSize = CFX_BaseMassArray::GetSize();
     if (iCount < 0 || iCount > iSize) {
       iCount = iSize;
@@ -351,7 +244,7 @@
     }
     return CFX_BaseMassArray::RemoveLast(iCount);
   }
-  void RemoveAll(FX_BOOL bLeaveMemory = FALSE) {
+  void RemoveAll(FX_BOOL bLeaveMemory) {
     int32_t iSize = CFX_BaseMassArray::GetSize();
     for (int32_t i = 0; i < iSize; i++) {
       ((baseType*)GetPtrAt(i))->~baseType();
@@ -374,8 +267,9 @@
 template <class baseType>
 class CFX_DiscreteArrayTemplate : public CFX_BaseDiscreteArray {
  public:
-  CFX_DiscreteArrayTemplate(int32_t iChunkSize = 100)
+  CFX_DiscreteArrayTemplate(int32_t iChunkSize)
       : CFX_BaseDiscreteArray(iChunkSize, sizeof(baseType)) {}
+
   baseType& GetAt(int32_t index, const baseType& defValue) const {
     baseType* p = (baseType*)CFX_BaseDiscreteArray::GetAt(index);
     return p ? *p : (baseType&)defValue;
@@ -388,9 +282,6 @@
   }
   void RemoveAll() { CFX_BaseDiscreteArray::RemoveAll(); }
 };
-typedef CFX_DiscreteArrayTemplate<void*> CFX_PtrDiscreteArray;
-typedef CFX_DiscreteArrayTemplate<uint32_t> CFX_DWordDiscreteArray;
-typedef CFX_DiscreteArrayTemplate<uint16_t> CFX_WordDiscreteArray;
 
 class CFX_BaseStack : public CFX_Target {
  protected:
@@ -402,15 +293,16 @@
   uint8_t* GetTopElement() const;
   int32_t GetSize() const;
   uint8_t* GetAt(int32_t index) const;
-  void RemoveAll(FX_BOOL bLeaveMemory = FALSE);
+  void RemoveAll(FX_BOOL bLeaveMemory);
   CFX_BaseMassArrayImp* m_pData;
 };
 
 template <class baseType>
 class CFX_StackTemplate : public CFX_BaseStack {
  public:
-  CFX_StackTemplate(int32_t iChunkSize = 100)
+  CFX_StackTemplate(int32_t iChunkSize)
       : CFX_BaseStack(iChunkSize, sizeof(baseType)) {}
+
   int32_t Push(const baseType& element) {
     int32_t index = CFX_BaseStack::GetSize();
     *(baseType*)CFX_BaseStack::Push() = element;
@@ -424,21 +316,18 @@
   baseType* GetAt(int32_t index) const {
     return (baseType*)CFX_BaseStack::GetAt(index);
   }
-  void RemoveAll(FX_BOOL bLeaveMemory = FALSE) {
+  void RemoveAll(FX_BOOL bLeaveMemory) {
     CFX_BaseStack::RemoveAll(bLeaveMemory);
   }
 };
-typedef CFX_StackTemplate<void*> CFX_PtrStack;
-typedef CFX_StackTemplate<uint32_t> CFX_DWordStack;
-typedef CFX_StackTemplate<uint16_t> CFX_WordStack;
-typedef CFX_StackTemplate<int32_t> CFX_Int32Stack;
 
 template <class baseType>
 class CFX_ObjectStackTemplate : public CFX_BaseStack {
  public:
-  CFX_ObjectStackTemplate(int32_t iChunkSize = 100)
+  CFX_ObjectStackTemplate(int32_t iChunkSize)
       : CFX_BaseStack(iChunkSize, sizeof(baseType)) {}
-  ~CFX_ObjectStackTemplate() { RemoveAll(); }
+  ~CFX_ObjectStackTemplate() { RemoveAll(FALSE); }
+
   int32_t Push(const baseType& element) {
     int32_t index = CFX_BaseStack::GetSize();
     baseType* p = (baseType*)CFX_BaseStack::Push();
@@ -459,7 +348,7 @@
   baseType* GetAt(int32_t index) const {
     return (baseType*)CFX_BaseStack::GetAt(index);
   }
-  void RemoveAll(FX_BOOL bLeaveMemory = FALSE) {
+  void RemoveAll(FX_BOOL bLeaveMemory) {
     int32_t iSize = CFX_BaseStack::GetSize();
     for (int32_t i = 0; i < iSize; i++) {
       ((baseType*)CFX_BaseStack::GetAt(i))->~baseType();
@@ -467,8 +356,8 @@
     CFX_BaseStack::RemoveAll(bLeaveMemory);
   }
   int32_t Copy(const CFX_ObjectStackTemplate& src,
-               int32_t iStart = 0,
-               int32_t iCount = -1) {
+               int32_t iStart,
+               int32_t iCount) {
     if (iCount == 0) {
       return CFX_BaseStack::GetSize();
     }
diff --git a/xfa/fgas/font/fgas_gefont.cpp b/xfa/fgas/font/fgas_gefont.cpp
index a7d8c49..576f482 100644
--- a/xfa/fgas/font/fgas_gefont.cpp
+++ b/xfa/fgas/font/fgas_gefont.cpp
@@ -219,7 +219,7 @@
   if (bSaveStream) {
     m_pStream = pFontStream;
   }
-  m_pFileRead = FX_CreateFileRead(pFontStream);
+  m_pFileRead = FX_CreateFileRead(pFontStream, FALSE);
   m_pFont = new CFX_Font;
   FX_BOOL bRet = m_pFont->LoadFile(m_pFileRead);
   if (bRet) {
@@ -250,7 +250,7 @@
       return FALSE;
   }
   if (!m_pCharWidthMap)
-    m_pCharWidthMap = new CFX_WordDiscreteArray(1024);
+    m_pCharWidthMap = new CFX_DiscreteArrayTemplate<uint16_t>(1024);
   if (!m_pRectArray)
     m_pRectArray = new CFX_MassArrayTemplate<CFX_Rect>(16);
   if (!m_pBBoxMap)
@@ -473,7 +473,7 @@
     m_pBBoxMap->RemoveAll();
   }
   if (m_pRectArray) {
-    m_pRectArray->RemoveAll();
+    m_pRectArray->RemoveAll(FALSE);
   }
 }
 CFGAS_GEFont* CFGAS_GEFont::GetSubstFont(int32_t iGlyphIndex) const {
diff --git a/xfa/fgas/font/fgas_gefont.h b/xfa/fgas/font/fgas_gefont.h
index 5d7b664..a94583f 100644
--- a/xfa/fgas/font/fgas_gefont.h
+++ b/xfa/fgas/font/fgas_gefont.h
@@ -98,7 +98,7 @@
   IFX_Stream* m_pStream;
   IFX_FileRead* m_pFileRead;
   CFX_UnicodeEncoding* m_pFontEncoding;
-  CFX_WordDiscreteArray* m_pCharWidthMap;
+  CFX_DiscreteArrayTemplate<uint16_t>* m_pCharWidthMap;
   CFX_MassArrayTemplate<CFX_Rect>* m_pRectArray;
   CFX_MapPtrToPtr* m_pBBoxMap;
   CXFA_PDFFontMgr* m_pProvider;
diff --git a/xfa/fgas/font/fgas_stdfontmgr.cpp b/xfa/fgas/font/fgas_stdfontmgr.cpp
index 47ec72b..8af3f22 100644
--- a/xfa/fgas/font/fgas_stdfontmgr.cpp
+++ b/xfa/fgas/font/fgas_stdfontmgr.cpp
@@ -20,7 +20,7 @@
 
 CFGAS_StdFontMgrImp::CFGAS_StdFontMgrImp(FX_LPEnumAllFonts pEnumerator)
     : m_pEnumerator(pEnumerator),
-      m_FontFaces(),
+      m_FontFaces(100),
       m_CPFonts(8),
       m_FamilyFonts(16),
       m_UnicodeFonts(16),
@@ -33,7 +33,7 @@
 }
 
 CFGAS_StdFontMgrImp::~CFGAS_StdFontMgrImp() {
-  m_FontFaces.RemoveAll();
+  m_FontFaces.RemoveAll(FALSE);
   m_CPFonts.RemoveAll();
   m_FamilyFonts.RemoveAll();
   m_UnicodeFonts.RemoveAll();
@@ -298,7 +298,7 @@
     return pDesc;
   }
   if (pszFontFamily && m_pEnumerator) {
-    CFX_FontDescriptors namedFonts;
+    CFX_FontDescriptors namedFonts(100);
     m_pEnumerator(namedFonts, pszFontFamily, wUnicode);
     params.pwsFamily = nullptr;
     pDesc = FX_DefFontMatcher(&params, namedFonts);
diff --git a/xfa/fgas/layout/fgas_rtfbreak.cpp b/xfa/fgas/layout/fgas_rtfbreak.cpp
index 8a4f6ea..bfe3ca6 100644
--- a/xfa/fgas/layout/fgas_rtfbreak.cpp
+++ b/xfa/fgas/layout/fgas_rtfbreak.cpp
@@ -646,7 +646,7 @@
   CFX_RTFLine* pNextLine =
       (m_pCurLine == &m_RTFLine1) ? &m_RTFLine2 : &m_RTFLine1;
   FX_BOOL bAllChars = (m_iAlignment > FX_RTFLINEALIGNMENT_Right);
-  CFX_TPOArray tpos;
+  CFX_TPOArray tpos(100);
   if (EndBreak_SplitLine(pNextLine, bAllChars, dwStatus)) {
     goto EndBreak_Ret;
   }
diff --git a/xfa/fgas/layout/fgas_textbreak.cpp b/xfa/fgas/layout/fgas_textbreak.cpp
index 0c1c6a2..89b17cc 100644
--- a/xfa/fgas/layout/fgas_textbreak.cpp
+++ b/xfa/fgas/layout/fgas_textbreak.cpp
@@ -951,7 +951,7 @@
   CFX_TxtLine* pNextLine =
       (m_pCurLine == m_pTxtLine1) ? m_pTxtLine2 : m_pTxtLine1;
   FX_BOOL bAllChars = (m_iCurAlignment > FX_TXTLINEALIGNMENT_Right);
-  CFX_TPOArray tpos;
+  CFX_TPOArray tpos(100);
   CFX_Char* pTC;
   if (m_bArabicShapes) {
     EndBreak_UpdateArabicShapes();
diff --git a/xfa/fxfa/parser/cxfa_xml_parser.cpp b/xfa/fxfa/parser/cxfa_xml_parser.cpp
index 268c8b1..654a449 100644
--- a/xfa/fxfa/parser/cxfa_xml_parser.cpp
+++ b/xfa/fxfa/parser/cxfa_xml_parser.cpp
@@ -23,7 +23,7 @@
 }
 
 CXFA_XMLParser::~CXFA_XMLParser() {
-  m_NodeStack.RemoveAll();
+  m_NodeStack.RemoveAll(FALSE);
   m_ws1.clear();
   m_ws2.clear();
 }
diff --git a/xfa/fxfa/parser/xfa_basic_imp.cpp b/xfa/fxfa/parser/xfa_basic_imp.cpp
index f236d0e..4d3b128 100644
--- a/xfa/fxfa/parser/xfa_basic_imp.cpp
+++ b/xfa/fxfa/parser/xfa_basic_imp.cpp
@@ -544,8 +544,7 @@
 }
 int32_t CXFA_WideTextRead::ReadString(FX_WCHAR* pStr,
                                       int32_t iMaxLength,
-                                      FX_BOOL& bEOS,
-                                      int32_t const* pByteSize) {
+                                      FX_BOOL& bEOS) {
   iMaxLength = std::min(iMaxLength, m_wsBuffer.GetLength() - m_iPosition);
   if (iMaxLength == 0)
     return 0;
diff --git a/xfa/fxfa/parser/xfa_basic_imp.h b/xfa/fxfa/parser/xfa_basic_imp.h
index 3badbb4..8ca153b 100644
--- a/xfa/fxfa/parser/xfa_basic_imp.h
+++ b/xfa/fxfa/parser/xfa_basic_imp.h
@@ -36,8 +36,7 @@
   int32_t ReadData(uint8_t* pBuffer, int32_t iBufferSize) override;
   int32_t ReadString(FX_WCHAR* pStr,
                      int32_t iMaxLength,
-                     FX_BOOL& bEOS,
-                     int32_t const* pByteSize = nullptr) override;
+                     FX_BOOL& bEOS) override;
   int32_t WriteData(const uint8_t* pBuffer, int32_t iBufferSize) override;
   int32_t WriteString(const FX_WCHAR* pStr, int32_t iLength) override;
   void Flush() override {}
diff --git a/xfa/fxfa/parser/xfa_object_imp.cpp b/xfa/fxfa/parser/xfa_object_imp.cpp
index a9a5b29..de2f804 100644
--- a/xfa/fxfa/parser/xfa_object_imp.cpp
+++ b/xfa/fxfa/parser/xfa_object_imp.cpp
@@ -3625,7 +3625,7 @@
     case XFA_ATTRIBUTETYPE_Integer:
       return SetInteger(
           pAttr->eName,
-          FXSYS_round(FX_wcstof(wsValue.c_str(), wsValue.GetLength())),
+          FXSYS_round(FX_wcstof(wsValue.c_str(), wsValue.GetLength(), nullptr)),
           bNotify);
     case XFA_ATTRIBUTETYPE_Measure:
       return SetMeasure(pAttr->eName, CXFA_Measurement(wsValue), bNotify);
diff --git a/xfa/fxfa/parser/xfa_utils.h b/xfa/fxfa/parser/xfa_utils.h
index 0aa9064..794624a 100644
--- a/xfa/fxfa/parser/xfa_utils.h
+++ b/xfa/fxfa/parser/xfa_utils.h
@@ -27,7 +27,7 @@
 class CXFA_NodeIteratorTemplate {
  public:
   CXFA_NodeIteratorTemplate(NodeType* pRootNode = nullptr)
-      : m_pRoot(pRootNode) {
+      : m_pRoot(pRootNode), m_NodeStack(100) {
     if (pRootNode) {
       m_NodeStack.Push(pRootNode);
     }
@@ -37,11 +37,11 @@
       return FALSE;
     }
     m_pRoot = pRootNode;
-    m_NodeStack.RemoveAll();
+    m_NodeStack.RemoveAll(FALSE);
     m_NodeStack.Push(pRootNode);
     return TRUE;
   }
-  void Clear() { m_NodeStack.RemoveAll(); }
+  void Clear() { m_NodeStack.RemoveAll(FALSE); }
   void Reset() {
     Clear();
     if (m_pRoot) {
@@ -49,9 +49,9 @@
     }
   }
   FX_BOOL SetCurrent(NodeType* pCurNode) {
-    m_NodeStack.RemoveAll();
+    m_NodeStack.RemoveAll(FALSE);
     if (pCurNode) {
-      CFX_StackTemplate<NodeType*> revStack;
+      CFX_StackTemplate<NodeType*> revStack(100);
       NodeType* pNode;
       for (pNode = pCurNode; pNode && pNode != m_pRoot;
            pNode = TraverseStrategy::GetParent(pNode)) {
@@ -94,7 +94,7 @@
       }
       m_NodeStack.Push(pPrevItem);
     } else {
-      m_NodeStack.RemoveAll();
+      m_NodeStack.RemoveAll(FALSE);
       if (m_pRoot) {
         m_NodeStack.Push(m_pRoot);
       }