| Index: fpdfsdk/src/javascript/Document.cpp
|
| diff --git a/fpdfsdk/src/javascript/Document.cpp b/fpdfsdk/src/javascript/Document.cpp
|
| index bcf8af6595078946b8f701f06d928819ff755632..4113f60735c44ebe622867661bbfacec3dc067f0 100644
|
| --- a/fpdfsdk/src/javascript/Document.cpp
|
| +++ b/fpdfsdk/src/javascript/Document.cpp
|
| @@ -861,12 +861,9 @@ FX_BOOL Document::info(IJS_Context* cc,
|
| FXJS_PutObjectBoolean(isolate, pObj, wsKey.c_str(),
|
| (bool)pValueObj->GetInteger());
|
| }
|
| -
|
| vp << pObj;
|
| - return TRUE;
|
| - } else {
|
| - return TRUE;
|
| }
|
| + return TRUE;
|
| }
|
|
|
| FX_BOOL Document::creationDate(IJS_Context* cc,
|
| @@ -929,13 +926,20 @@ FX_BOOL Document::delay(IJS_Context* cc,
|
|
|
| m_DelayData.RemoveAll();
|
| } else {
|
| + CFX_ArrayTemplate<CJS_DelayData*> DelayDataToProcess;
|
| for (int i = 0, sz = m_DelayData.GetSize(); i < sz; i++) {
|
| if (CJS_DelayData* pData = m_DelayData.GetAt(i)) {
|
| - Field::DoDelay(m_pDocument, pData);
|
| - delete m_DelayData.GetAt(i);
|
| + DelayDataToProcess.Add(pData);
|
| + m_DelayData.SetAt(i, NULL);
|
| }
|
| }
|
| m_DelayData.RemoveAll();
|
| + for (int i = 0, sz = DelayDataToProcess.GetSize(); i < sz; i++) {
|
| + CJS_DelayData* pData = DelayDataToProcess.GetAt(i);
|
| + Field::DoDelay(m_pDocument, pData);
|
| + DelayDataToProcess.SetAt(i, NULL);
|
| + delete pData;
|
| + }
|
| }
|
| }
|
| return TRUE;
|
| @@ -1340,40 +1344,6 @@ IconElement* IconTree::operator[](int iIndex) {
|
| return NULL;
|
| }
|
|
|
| -void IconTree::DeleteIconElement(CFX_WideString swIconName) {
|
| - IconElement* pTemp = m_pHead;
|
| - int iLoopCount = m_iLength;
|
| - for (int i = 0; i < iLoopCount - 1; i++) {
|
| - if (pTemp == m_pEnd)
|
| - break;
|
| -
|
| - if (m_pHead->IconName == swIconName) {
|
| - m_pHead = m_pHead->NextIcon;
|
| - delete pTemp;
|
| - m_iLength--;
|
| - pTemp = m_pHead;
|
| - }
|
| - if (pTemp->NextIcon->IconName == swIconName) {
|
| - if (pTemp->NextIcon == m_pEnd) {
|
| - m_pEnd = pTemp;
|
| - delete pTemp->NextIcon;
|
| - m_iLength--;
|
| - pTemp->NextIcon = NULL;
|
| - } else {
|
| - IconElement* pElement = pTemp->NextIcon;
|
| - pTemp->NextIcon = pTemp->NextIcon->NextIcon;
|
| - delete pElement;
|
| - m_iLength--;
|
| - pElement = NULL;
|
| - }
|
| -
|
| - continue;
|
| - }
|
| -
|
| - pTemp = pTemp->NextIcon;
|
| - }
|
| -}
|
| -
|
| FX_BOOL Document::addIcon(IJS_Context* cc,
|
| const CJS_Parameters& params,
|
| CJS_Value& vRet,
|
| @@ -1505,15 +1475,7 @@ FX_BOOL Document::removeIcon(IJS_Context* cc,
|
| const CJS_Parameters& params,
|
| CJS_Value& vRet,
|
| CFX_WideString& sError) {
|
| - CJS_Context* pContext = (CJS_Context*)cc;
|
| - if (params.size() != 1) {
|
| - sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
|
| - return FALSE;
|
| - }
|
| -
|
| - if (!m_pIconTree)
|
| - return FALSE;
|
| - CFX_WideString swIconName = params[0].ToCFXWideString();
|
| + // Unsafe, no supported.
|
| return TRUE;
|
| }
|
|
|
| @@ -1639,7 +1601,10 @@ FX_BOOL Document::getPageNumWords(IJS_Context* cc,
|
| return FALSE;
|
|
|
| int nPageNo = params.GetSize() > 0 ? params[0].ToInt() : 0;
|
| +
|
| CPDF_Document* pDocument = m_pDocument->GetDocument()->GetPDFDoc();
|
| + ASSERT(pDocument != NULL);
|
| +
|
| CJS_Context* pContext = static_cast<CJS_Context*>(cc);
|
| if (nPageNo < 0 || nPageNo >= pDocument->GetPageCount()) {
|
| sError = JSGetStringFromID(pContext, IDS_STRING_JSVALUEERROR);
|
| @@ -1788,47 +1753,7 @@ FX_BOOL Document::deletePages(IJS_Context* cc,
|
| const CJS_Parameters& params,
|
| CJS_Value& vRet,
|
| CFX_WideString& sError) {
|
| - if (!(m_pDocument->GetPermissions(FPDFPERM_MODIFY) ||
|
| - m_pDocument->GetPermissions(FPDFPERM_ASSEMBLE)))
|
| - return FALSE;
|
| -
|
| - CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
|
| - v8::Isolate* isolate = pRuntime->GetIsolate();
|
| -
|
| - int iSize = params.size();
|
| - int nStart = 0;
|
| - int nEnd = 0;
|
| - if (iSize < 1) {
|
| - } else if (iSize == 1) {
|
| - if (params[0].GetType() == CJS_Value::VT_object) {
|
| - v8::Local<v8::Object> pObj = params[0].ToV8Object();
|
| - v8::Local<v8::Value> pValue =
|
| - FXJS_GetObjectElement(isolate, pObj, L"nStart");
|
| - nStart = CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToInt();
|
| - pValue = FXJS_GetObjectElement(isolate, pObj, L"nEnd");
|
| - nEnd = CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToInt();
|
| - } else {
|
| - nStart = params[0].ToInt();
|
| - }
|
| - } else {
|
| - nStart = params[0].ToInt();
|
| - nEnd = params[1].ToInt();
|
| - }
|
| -
|
| - int nTotal = m_pDocument->GetPageCount();
|
| - if (nStart < 0)
|
| - nStart = 0;
|
| - if (nStart >= nTotal)
|
| - nStart = nTotal - 1;
|
| -
|
| - if (nEnd < 0)
|
| - nEnd = 0;
|
| - if (nEnd >= nTotal)
|
| - nEnd = nTotal - 1;
|
| -
|
| - if (nEnd < nStart)
|
| - nEnd = nStart;
|
| -
|
| + // Unsafe, no supported.
|
| return TRUE;
|
| }
|
|
|
| @@ -1871,13 +1796,13 @@ void Document::AddDelayData(CJS_DelayData* pData) {
|
| void Document::DoFieldDelay(const CFX_WideString& sFieldName,
|
| int nControlIndex) {
|
| CFX_DWordArray DelArray;
|
| + CFX_ArrayTemplate<CJS_DelayData*> DelayDataForFieldAndControlIndex;
|
|
|
| for (int i = 0, sz = m_DelayData.GetSize(); i < sz; i++) {
|
| if (CJS_DelayData* pData = m_DelayData.GetAt(i)) {
|
| if (pData->sFieldName == sFieldName &&
|
| pData->nControlIndex == nControlIndex) {
|
| - Field::DoDelay(m_pDocument, pData);
|
| - delete pData;
|
| + DelayDataForFieldAndControlIndex.Add(pData);
|
| m_DelayData.SetAt(i, NULL);
|
| DelArray.Add(i);
|
| }
|
| @@ -1887,6 +1812,14 @@ void Document::DoFieldDelay(const CFX_WideString& sFieldName,
|
| for (int j = DelArray.GetSize() - 1; j >= 0; j--) {
|
| m_DelayData.RemoveAt(DelArray[j]);
|
| }
|
| +
|
| + for (int i = 0, sz = DelayDataForFieldAndControlIndex.GetSize(); i < sz;
|
| + i++) {
|
| + CJS_DelayData* pData = DelayDataForFieldAndControlIndex.GetAt(i);
|
| + Field::DoDelay(m_pDocument, pData);
|
| + DelayDataForFieldAndControlIndex.SetAt(i, NULL);
|
| + delete pData;
|
| + }
|
| }
|
|
|
| void Document::AddDelayAnnotData(CJS_AnnotObj* pData) {
|
|
|