| Index: core/src/fpdfdoc/doc_form.cpp
|
| diff --git a/core/src/fpdfdoc/doc_form.cpp b/core/src/fpdfdoc/doc_form.cpp
|
| index 07c54a08a8003a88f87fc46fd96ef073089e500b..2397d6b74abec5f89040ad3bb4c329274665ff9f 100644
|
| --- a/core/src/fpdfdoc/doc_form.cpp
|
| +++ b/core/src/fpdfdoc/doc_form.cpp
|
| @@ -36,7 +36,7 @@ class CFieldTree {
|
| public:
|
| struct _Node {
|
| _Node* parent;
|
| - CFX_PtrArray children;
|
| + CFX_ArrayTemplate<_Node*> children;
|
| CFX_WideString short_name;
|
| CPDF_FormField* field_ptr;
|
| int CountFields(int nLevel = 0) {
|
| @@ -48,7 +48,7 @@ class CFieldTree {
|
| }
|
| int count = 0;
|
| for (int i = 0; i < children.GetSize(); i++) {
|
| - count += ((_Node*)children.GetAt(i))->CountFields(nLevel + 1);
|
| + count += children.GetAt(i)->CountFields(nLevel + 1);
|
| }
|
| return count;
|
| }
|
| @@ -61,11 +61,8 @@ class CFieldTree {
|
| return NULL;
|
| }
|
| for (int i = 0; i < children.GetSize(); i++) {
|
| - _Node* pNode = (_Node*)children.GetAt(i);
|
| - CPDF_FormField* pField = pNode->GetField(fields_to_go);
|
| - if (pField) {
|
| + if (CPDF_FormField* pField = children.GetAt(i)->GetField(fields_to_go))
|
| return pField;
|
| - }
|
| }
|
| return NULL;
|
| }
|
| @@ -109,17 +106,13 @@ CFieldTree::_Node* CFieldTree::AddChild(_Node* pParent,
|
| return pNode;
|
| }
|
| void CFieldTree::RemoveNode(_Node* pNode, int nLevel) {
|
| - if (pNode == NULL) {
|
| + if (!pNode) {
|
| return;
|
| }
|
| - if (nLevel > nMaxRecursion) {
|
| - delete pNode;
|
| - return;
|
| - }
|
| - CFX_PtrArray& ptr_array = pNode->children;
|
| - for (int i = 0; i < ptr_array.GetSize(); i++) {
|
| - _Node* pChild = (_Node*)ptr_array[i];
|
| - RemoveNode(pChild, nLevel + 1);
|
| + if (nLevel <= nMaxRecursion) {
|
| + for (int i = 0; i < pNode->children.GetSize(); i++) {
|
| + RemoveNode(pNode->children[i], nLevel + 1);
|
| + }
|
| }
|
| delete pNode;
|
| }
|
| @@ -128,9 +121,8 @@ CFieldTree::_Node* CFieldTree::_Lookup(_Node* pParent,
|
| if (pParent == NULL) {
|
| return NULL;
|
| }
|
| - CFX_PtrArray& ptr_array = pParent->children;
|
| - for (int i = 0; i < ptr_array.GetSize(); i++) {
|
| - _Node* pNode = (_Node*)ptr_array[i];
|
| + for (int i = 0; i < pParent->children.GetSize(); i++) {
|
| + _Node* pNode = pParent->children[i];
|
| if (pNode->short_name.GetLength() == short_name.GetLength() &&
|
| FXSYS_memcmp(pNode->short_name.c_str(), short_name.c_str(),
|
| short_name.GetLength() * sizeof(FX_WCHAR)) == 0) {
|
| @@ -140,10 +132,8 @@ CFieldTree::_Node* CFieldTree::_Lookup(_Node* pParent,
|
| return NULL;
|
| }
|
| void CFieldTree::RemoveAll() {
|
| - CFX_PtrArray& ptr_array = m_Root.children;
|
| - for (int i = 0; i < ptr_array.GetSize(); i++) {
|
| - _Node* pNode = (_Node*)ptr_array[i];
|
| - RemoveNode(pNode);
|
| + for (int i = 0; i < m_Root.children.GetSize(); i++) {
|
| + RemoveNode(m_Root.children[i]);
|
| }
|
| }
|
| void CFieldTree::SetField(const CFX_WideString& full_name,
|
| @@ -202,10 +192,9 @@ CPDF_FormField* CFieldTree::RemoveField(const CFX_WideString& full_name) {
|
| name_extractor.GetNext(pName, nLength);
|
| }
|
| if (pNode && pNode != &m_Root) {
|
| - CFX_PtrArray& ptr_array = pLast->children;
|
| - for (int i = 0; i < ptr_array.GetSize(); i++) {
|
| - if (pNode == (_Node*)ptr_array[i]) {
|
| - ptr_array.RemoveAt(i);
|
| + for (int i = 0; i < pLast->children.GetSize(); i++) {
|
| + if (pNode == pLast->children[i]) {
|
| + pLast->children.RemoveAt(i);
|
| break;
|
| }
|
| }
|
|
|