| OLD | NEW |
| 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 "core/fpdfapi/edit/editint.h" | 7 #include "core/fpdfapi/edit/editint.h" |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 1295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1306 if (!iRet) | 1306 if (!iRet) |
| 1307 continue; | 1307 continue; |
| 1308 | 1308 |
| 1309 if (pPause && pPause->NeedToPauseNow()) { | 1309 if (pPause && pPause->NeedToPauseNow()) { |
| 1310 m_Pos = (void*)(uintptr_t)(objnum + 1); | 1310 m_Pos = (void*)(uintptr_t)(objnum + 1); |
| 1311 return 1; | 1311 return 1; |
| 1312 } | 1312 } |
| 1313 } | 1313 } |
| 1314 return 0; | 1314 return 0; |
| 1315 } | 1315 } |
| 1316 |
| 1316 int32_t CPDF_Creator::WriteNewObjs(bool bIncremental, IFX_Pause* pPause) { | 1317 int32_t CPDF_Creator::WriteNewObjs(bool bIncremental, IFX_Pause* pPause) { |
| 1317 int32_t iCount = m_NewObjNumArray.GetSize(); | 1318 size_t iCount = m_NewObjNumArray.size(); |
| 1318 int32_t index = (int32_t)(uintptr_t)m_Pos; | 1319 size_t index = (size_t)(uintptr_t)m_Pos; |
| 1319 while (index < iCount) { | 1320 while (index < iCount) { |
| 1320 uint32_t objnum = m_NewObjNumArray.ElementAt(index); | 1321 uint32_t objnum = m_NewObjNumArray[index]; |
| 1321 CPDF_Object* pObj = m_pDocument->GetIndirectObject(objnum); | 1322 CPDF_Object* pObj = m_pDocument->GetIndirectObject(objnum); |
| 1322 if (!pObj) { | 1323 if (!pObj) { |
| 1323 ++index; | 1324 ++index; |
| 1324 continue; | 1325 continue; |
| 1325 } | 1326 } |
| 1326 m_ObjectOffset[objnum] = m_Offset; | 1327 m_ObjectOffset[objnum] = m_Offset; |
| 1327 if (WriteIndirectObj(pObj)) | 1328 if (WriteIndirectObj(pObj)) |
| 1328 return -1; | 1329 return -1; |
| 1329 | 1330 |
| 1330 index++; | 1331 index++; |
| 1331 if (pPause && pPause->NeedToPauseNow()) { | 1332 if (pPause && pPause->NeedToPauseNow()) { |
| 1332 m_Pos = (FX_POSITION)(uintptr_t)index; | 1333 m_Pos = (FX_POSITION)(uintptr_t)index; |
| 1333 return 1; | 1334 return 1; |
| 1334 } | 1335 } |
| 1335 } | 1336 } |
| 1336 return 0; | 1337 return 0; |
| 1337 } | 1338 } |
| 1339 |
| 1338 void CPDF_Creator::InitOldObjNumOffsets() { | 1340 void CPDF_Creator::InitOldObjNumOffsets() { |
| 1339 if (!m_pParser) { | 1341 if (!m_pParser) { |
| 1340 return; | 1342 return; |
| 1341 } | 1343 } |
| 1342 uint32_t j = 0; | 1344 uint32_t j = 0; |
| 1343 uint32_t dwStart = 0; | 1345 uint32_t dwStart = 0; |
| 1344 uint32_t dwEnd = m_pParser->GetLastObjNum(); | 1346 uint32_t dwEnd = m_pParser->GetLastObjNum(); |
| 1345 while (dwStart <= dwEnd) { | 1347 while (dwStart <= dwEnd) { |
| 1346 while (dwStart <= dwEnd && m_pParser->IsObjectFreeOrNull(dwStart)) | 1348 while (dwStart <= dwEnd && m_pParser->IsObjectFreeOrNull(dwStart)) |
| 1347 dwStart++; | 1349 dwStart++; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 1366 const CPDF_Object* pObj = pair.second.get(); | 1368 const CPDF_Object* pObj = pair.second.get(); |
| 1367 if (bIncremental || pObj->GetObjNum() == CPDF_Object::kInvalidObjNum) | 1369 if (bIncremental || pObj->GetObjNum() == CPDF_Object::kInvalidObjNum) |
| 1368 continue; | 1370 continue; |
| 1369 if (m_pParser && m_pParser->IsValidObjectNumber(objnum) && | 1371 if (m_pParser && m_pParser->IsValidObjectNumber(objnum) && |
| 1370 m_pParser->GetObjectType(objnum)) { | 1372 m_pParser->GetObjectType(objnum)) { |
| 1371 continue; | 1373 continue; |
| 1372 } | 1374 } |
| 1373 AppendNewObjNum(objnum); | 1375 AppendNewObjNum(objnum); |
| 1374 } | 1376 } |
| 1375 | 1377 |
| 1376 int32_t iCount = m_NewObjNumArray.GetSize(); | 1378 size_t iCount = m_NewObjNumArray.size(); |
| 1377 if (iCount == 0) | 1379 if (iCount == 0) |
| 1378 return; | 1380 return; |
| 1379 | 1381 |
| 1380 int32_t i = 0; | 1382 size_t i = 0; |
| 1381 uint32_t dwStartObjNum = 0; | 1383 uint32_t dwStartObjNum = 0; |
| 1382 bool bCrossRefValid = m_pParser && m_pParser->GetLastXRefOffset() > 0; | 1384 bool bCrossRefValid = m_pParser && m_pParser->GetLastXRefOffset() > 0; |
| 1383 while (i < iCount) { | 1385 while (i < iCount) { |
| 1384 dwStartObjNum = m_NewObjNumArray.ElementAt(i); | 1386 dwStartObjNum = m_NewObjNumArray[i]; |
| 1385 if ((bIncremental && (bNoOriginal || bCrossRefValid)) || | 1387 if ((bIncremental && (bNoOriginal || bCrossRefValid)) || |
| 1386 !m_ObjectOffset.GetPtrAt(dwStartObjNum)) { | 1388 !m_ObjectOffset.GetPtrAt(dwStartObjNum)) { |
| 1387 break; | 1389 break; |
| 1388 } | 1390 } |
| 1389 i++; | 1391 i++; |
| 1390 } | 1392 } |
| 1391 if (i >= iCount) | 1393 if (i >= iCount) |
| 1392 return; | 1394 return; |
| 1393 | 1395 |
| 1394 uint32_t dwLastObjNum = dwStartObjNum; | 1396 uint32_t dwLastObjNum = dwStartObjNum; |
| 1395 i++; | 1397 i++; |
| 1396 bool bNewStart = false; | 1398 bool bNewStart = false; |
| 1397 for (; i < iCount; i++) { | 1399 for (; i < iCount; i++) { |
| 1398 uint32_t dwCurObjNum = m_NewObjNumArray.ElementAt(i); | 1400 uint32_t dwCurObjNum = m_NewObjNumArray[i]; |
| 1399 bool bExist = m_pParser && m_pParser->IsValidObjectNumber(dwCurObjNum) && | 1401 bool bExist = m_pParser && m_pParser->IsValidObjectNumber(dwCurObjNum) && |
| 1400 m_ObjectOffset.GetPtrAt(dwCurObjNum); | 1402 m_ObjectOffset.GetPtrAt(dwCurObjNum); |
| 1401 if (bExist || dwCurObjNum - dwLastObjNum > 1) { | 1403 if (bExist || dwCurObjNum - dwLastObjNum > 1) { |
| 1402 if (!bNewStart) | 1404 if (!bNewStart) |
| 1403 m_ObjectOffset.Add(dwStartObjNum, dwLastObjNum - dwStartObjNum + 1); | 1405 m_ObjectOffset.Add(dwStartObjNum, dwLastObjNum - dwStartObjNum + 1); |
| 1404 dwStartObjNum = dwCurObjNum; | 1406 dwStartObjNum = dwCurObjNum; |
| 1405 } | 1407 } |
| 1406 if (bNewStart) | 1408 if (bNewStart) |
| 1407 dwStartObjNum = dwCurObjNum; | 1409 dwStartObjNum = dwCurObjNum; |
| 1408 | 1410 |
| 1409 bNewStart = bExist; | 1411 bNewStart = bExist; |
| 1410 dwLastObjNum = dwCurObjNum; | 1412 dwLastObjNum = dwCurObjNum; |
| 1411 } | 1413 } |
| 1412 m_ObjectOffset.Add(dwStartObjNum, dwLastObjNum - dwStartObjNum + 1); | 1414 m_ObjectOffset.Add(dwStartObjNum, dwLastObjNum - dwStartObjNum + 1); |
| 1413 } | 1415 } |
| 1414 | 1416 |
| 1415 void CPDF_Creator::AppendNewObjNum(uint32_t objbum) { | 1417 void CPDF_Creator::AppendNewObjNum(uint32_t objnum) { |
| 1416 int32_t iStart = 0, iFind = 0; | 1418 m_NewObjNumArray.insert(std::lower_bound(m_NewObjNumArray.begin(), |
| 1417 int32_t iEnd = m_NewObjNumArray.GetUpperBound(); | 1419 m_NewObjNumArray.end(), objnum), |
| 1418 while (iStart <= iEnd) { | 1420 objnum); |
| 1419 int32_t iMid = (iStart + iEnd) / 2; | |
| 1420 uint32_t dwMid = m_NewObjNumArray.ElementAt(iMid); | |
| 1421 if (objbum < dwMid) { | |
| 1422 iEnd = iMid - 1; | |
| 1423 } else { | |
| 1424 if (iMid == iEnd) { | |
| 1425 iFind = iMid + 1; | |
| 1426 break; | |
| 1427 } | |
| 1428 uint32_t dwNext = m_NewObjNumArray.ElementAt(iMid + 1); | |
| 1429 if (objbum < dwNext) { | |
| 1430 iFind = iMid + 1; | |
| 1431 break; | |
| 1432 } | |
| 1433 iStart = iMid + 1; | |
| 1434 } | |
| 1435 } | |
| 1436 m_NewObjNumArray.InsertAt(iFind, objbum); | |
| 1437 } | 1421 } |
| 1422 |
| 1438 int32_t CPDF_Creator::WriteDoc_Stage1(IFX_Pause* pPause) { | 1423 int32_t CPDF_Creator::WriteDoc_Stage1(IFX_Pause* pPause) { |
| 1439 ASSERT(m_iStage > -1 || m_iStage < 20); | 1424 ASSERT(m_iStage > -1 || m_iStage < 20); |
| 1440 if (m_iStage == 0) { | 1425 if (m_iStage == 0) { |
| 1441 if (!m_pParser) { | 1426 if (!m_pParser) { |
| 1442 m_dwFlags &= ~FPDFCREATE_INCREMENTAL; | 1427 m_dwFlags &= ~FPDFCREATE_INCREMENTAL; |
| 1443 } | 1428 } |
| 1444 if (m_bSecurityChanged && (m_dwFlags & FPDFCREATE_NO_ORIGINAL) == 0) { | 1429 if (m_bSecurityChanged && (m_dwFlags & FPDFCREATE_NO_ORIGINAL) == 0) { |
| 1445 m_dwFlags &= ~FPDFCREATE_INCREMENTAL; | 1430 m_dwFlags &= ~FPDFCREATE_INCREMENTAL; |
| 1446 } | 1431 } |
| 1447 CPDF_Dictionary* pDict = m_pDocument->GetRoot(); | 1432 CPDF_Dictionary* pDict = m_pDocument->GetRoot(); |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1558 WriteNewObjs((m_dwFlags & FPDFCREATE_INCREMENTAL) != 0, pPause); | 1543 WriteNewObjs((m_dwFlags & FPDFCREATE_INCREMENTAL) != 0, pPause); |
| 1559 if (iRet) { | 1544 if (iRet) { |
| 1560 return iRet; | 1545 return iRet; |
| 1561 } | 1546 } |
| 1562 m_iStage = 27; | 1547 m_iStage = 27; |
| 1563 } | 1548 } |
| 1564 if (m_iStage == 27) { | 1549 if (m_iStage == 27) { |
| 1565 if (m_pEncryptDict && m_pEncryptDict->IsInline()) { | 1550 if (m_pEncryptDict && m_pEncryptDict->IsInline()) { |
| 1566 m_dwLastObjNum += 1; | 1551 m_dwLastObjNum += 1; |
| 1567 FX_FILESIZE saveOffset = m_Offset; | 1552 FX_FILESIZE saveOffset = m_Offset; |
| 1568 if (WriteIndirectObj(m_dwLastObjNum, m_pEncryptDict) < 0) { | 1553 if (WriteIndirectObj(m_dwLastObjNum, m_pEncryptDict) < 0) |
| 1569 return -1; | 1554 return -1; |
| 1570 } | 1555 |
| 1571 m_ObjectOffset.Add(m_dwLastObjNum, 1); | 1556 m_ObjectOffset.Add(m_dwLastObjNum, 1); |
| 1572 m_ObjectOffset[m_dwLastObjNum] = saveOffset; | 1557 m_ObjectOffset[m_dwLastObjNum] = saveOffset; |
| 1573 m_dwEncryptObjNum = m_dwLastObjNum; | 1558 m_dwEncryptObjNum = m_dwLastObjNum; |
| 1574 if (m_dwFlags & FPDFCREATE_INCREMENTAL) { | 1559 if (m_dwFlags & FPDFCREATE_INCREMENTAL) |
| 1575 m_NewObjNumArray.Add(m_dwLastObjNum); | 1560 m_NewObjNumArray.push_back(m_dwLastObjNum); |
| 1576 } | |
| 1577 } | 1561 } |
| 1578 m_iStage = 80; | 1562 m_iStage = 80; |
| 1579 } | 1563 } |
| 1580 return m_iStage; | 1564 return m_iStage; |
| 1581 } | 1565 } |
| 1582 int32_t CPDF_Creator::WriteDoc_Stage3(IFX_Pause* pPause) { | 1566 int32_t CPDF_Creator::WriteDoc_Stage3(IFX_Pause* pPause) { |
| 1583 ASSERT(m_iStage >= 80 || m_iStage < 90); | 1567 ASSERT(m_iStage >= 80 || m_iStage < 90); |
| 1584 uint32_t dwLastObjNum = m_dwLastObjNum; | 1568 uint32_t dwLastObjNum = m_dwLastObjNum; |
| 1585 if (m_iStage == 80) { | 1569 if (m_iStage == 80) { |
| 1586 m_XrefStart = m_Offset; | 1570 m_XrefStart = m_Offset; |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1645 } | 1629 } |
| 1646 if (pPause && pPause->NeedToPauseNow()) { | 1630 if (pPause && pPause->NeedToPauseNow()) { |
| 1647 m_Pos = (void*)(uintptr_t)i; | 1631 m_Pos = (void*)(uintptr_t)i; |
| 1648 return 1; | 1632 return 1; |
| 1649 } | 1633 } |
| 1650 } | 1634 } |
| 1651 m_iStage = 90; | 1635 m_iStage = 90; |
| 1652 } | 1636 } |
| 1653 if (m_iStage == 82) { | 1637 if (m_iStage == 82) { |
| 1654 CFX_ByteString str; | 1638 CFX_ByteString str; |
| 1655 int32_t iCount = m_NewObjNumArray.GetSize(); | 1639 size_t iCount = m_NewObjNumArray.size(); |
| 1656 int32_t i = (int32_t)(uintptr_t)m_Pos; | 1640 size_t i = (size_t)(uintptr_t)m_Pos; |
| 1657 while (i < iCount) { | 1641 while (i < iCount) { |
| 1658 int32_t j = i; | 1642 size_t j = i; |
| 1659 uint32_t objnum = m_NewObjNumArray.ElementAt(i); | 1643 uint32_t objnum = m_NewObjNumArray[i]; |
| 1660 while (j < iCount) { | 1644 while (j < iCount) { |
| 1661 if (++j == iCount) { | 1645 if (++j == iCount) |
| 1662 break; | 1646 break; |
| 1663 } | 1647 uint32_t dwCurrent = m_NewObjNumArray[j]; |
| 1664 uint32_t dwCurrent = m_NewObjNumArray.ElementAt(j); | 1648 if (dwCurrent - objnum > 1) |
| 1665 if (dwCurrent - objnum > 1) { | |
| 1666 break; | 1649 break; |
| 1667 } | |
| 1668 objnum = dwCurrent; | 1650 objnum = dwCurrent; |
| 1669 } | 1651 } |
| 1670 objnum = m_NewObjNumArray.ElementAt(i); | 1652 objnum = m_NewObjNumArray[i]; |
| 1671 if (objnum == 1) { | 1653 if (objnum == 1) { |
| 1672 str.Format("0 %d\r\n0000000000 65535 f\r\n", j - i + 1); | 1654 str.Format("0 %d\r\n0000000000 65535 f\r\n", j - i + 1); |
| 1673 } else { | 1655 } else { |
| 1674 str.Format("%d %d\r\n", objnum, j - i); | 1656 str.Format("%d %d\r\n", objnum, j - i); |
| 1675 } | 1657 } |
| 1676 if (m_File.AppendBlock(str.c_str(), str.GetLength()) < 0) { | 1658 if (m_File.AppendBlock(str.c_str(), str.GetLength()) < 0) { |
| 1677 return -1; | 1659 return -1; |
| 1678 } | 1660 } |
| 1679 while (i < j) { | 1661 while (i < j) { |
| 1680 objnum = m_NewObjNumArray.ElementAt(i++); | 1662 objnum = m_NewObjNumArray[i++]; |
| 1681 str.Format("%010d 00000 n\r\n", m_ObjectOffset[objnum]); | 1663 str.Format("%010d 00000 n\r\n", m_ObjectOffset[objnum]); |
| 1682 if (m_File.AppendBlock(str.c_str(), str.GetLength()) < 0) { | 1664 if (m_File.AppendBlock(str.c_str(), str.GetLength()) < 0) |
| 1683 return -1; | 1665 return -1; |
| 1684 } | |
| 1685 } | 1666 } |
| 1686 if (pPause && (i % 100) == 0 && pPause->NeedToPauseNow()) { | 1667 if (pPause && (i % 100) == 0 && pPause->NeedToPauseNow()) { |
| 1687 m_Pos = (void*)(uintptr_t)i; | 1668 m_Pos = (void*)(uintptr_t)i; |
| 1688 return 1; | 1669 return 1; |
| 1689 } | 1670 } |
| 1690 } | 1671 } |
| 1691 m_iStage = 90; | 1672 m_iStage = 90; |
| 1692 } | 1673 } |
| 1693 return m_iStage; | 1674 return m_iStage; |
| 1694 } | 1675 } |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1840 return -1; | 1821 return -1; |
| 1841 } | 1822 } |
| 1842 if (m_File.AppendDWord(m_dwLastObjNum * 5) < 0) { | 1823 if (m_File.AppendDWord(m_dwLastObjNum * 5) < 0) { |
| 1843 return -1; | 1824 return -1; |
| 1844 } | 1825 } |
| 1845 if (m_File.AppendString(">>stream\r\n") < 0) { | 1826 if (m_File.AppendString(">>stream\r\n") < 0) { |
| 1846 return -1; | 1827 return -1; |
| 1847 } | 1828 } |
| 1848 for (i = 0; i < m_dwLastObjNum; i++) { | 1829 for (i = 0; i < m_dwLastObjNum; i++) { |
| 1849 FX_FILESIZE* offset = m_ObjectOffset.GetPtrAt(i); | 1830 FX_FILESIZE* offset = m_ObjectOffset.GetPtrAt(i); |
| 1850 if (!offset) { | 1831 if (!offset) |
| 1851 continue; | 1832 continue; |
| 1852 } | |
| 1853 OutputIndex(&m_File, *offset); | 1833 OutputIndex(&m_File, *offset); |
| 1854 } | 1834 } |
| 1855 } else { | 1835 } else { |
| 1856 int count = m_NewObjNumArray.GetSize(); | 1836 size_t count = m_NewObjNumArray.size(); |
| 1857 int32_t i = 0; | 1837 size_t i = 0; |
| 1858 for (i = 0; i < count; i++) { | 1838 for (i = 0; i < count; i++) { |
| 1859 uint32_t objnum = m_NewObjNumArray.ElementAt(i); | 1839 if (m_File.AppendDWord(m_NewObjNumArray[i]) < 0) |
| 1860 if (m_File.AppendDWord(objnum) < 0) { | |
| 1861 return -1; | 1840 return -1; |
| 1862 } | 1841 if (m_File.AppendString(" 1 ") < 0) |
| 1863 if (m_File.AppendString(" 1 ") < 0) { | |
| 1864 return -1; | 1842 return -1; |
| 1865 } | |
| 1866 } | 1843 } |
| 1867 if (m_File.AppendString("]/Length ") < 0) { | 1844 if (m_File.AppendString("]/Length ") < 0) |
| 1868 return -1; | 1845 return -1; |
| 1869 } | 1846 if (m_File.AppendDWord(count * 5) < 0) |
| 1870 if (m_File.AppendDWord(count * 5) < 0) { | |
| 1871 return -1; | 1847 return -1; |
| 1872 } | 1848 if (m_File.AppendString(">>stream\r\n") < 0) |
| 1873 if (m_File.AppendString(">>stream\r\n") < 0) { | |
| 1874 return -1; | 1849 return -1; |
| 1875 } | |
| 1876 for (i = 0; i < count; i++) { | 1850 for (i = 0; i < count; i++) { |
| 1877 uint32_t objnum = m_NewObjNumArray.ElementAt(i); | 1851 uint32_t objnum = m_NewObjNumArray[i]; |
| 1878 FX_FILESIZE offset = m_ObjectOffset[objnum]; | 1852 FX_FILESIZE offset = m_ObjectOffset[objnum]; |
| 1879 OutputIndex(&m_File, offset); | 1853 OutputIndex(&m_File, offset); |
| 1880 } | 1854 } |
| 1881 } | 1855 } |
| 1882 if (m_File.AppendString("\r\nendstream") < 0) { | 1856 if (m_File.AppendString("\r\nendstream") < 0) |
| 1883 return -1; | 1857 return -1; |
| 1884 } | |
| 1885 } | 1858 } |
| 1886 } | 1859 } |
| 1887 if (m_File.AppendString("\r\nstartxref\r\n") < 0) { | 1860 if (m_File.AppendString("\r\nstartxref\r\n") < 0) { |
| 1888 return -1; | 1861 return -1; |
| 1889 } | 1862 } |
| 1890 FX_CHAR offset_buf[20]; | 1863 FX_CHAR offset_buf[20]; |
| 1891 FXSYS_memset(offset_buf, 0, sizeof(offset_buf)); | 1864 FXSYS_memset(offset_buf, 0, sizeof(offset_buf)); |
| 1892 FXSYS_i64toa(m_XrefStart, offset_buf, 10); | 1865 FXSYS_i64toa(m_XrefStart, offset_buf, 10); |
| 1893 if (m_File.AppendBlock(offset_buf, FXSYS_strlen(offset_buf)) < 0) { | 1866 if (m_File.AppendBlock(offset_buf, FXSYS_strlen(offset_buf)) < 0) { |
| 1894 return -1; | 1867 return -1; |
| 1895 } | 1868 } |
| 1896 if (m_File.AppendString("\r\n%%EOF\r\n") < 0) { | 1869 if (m_File.AppendString("\r\n%%EOF\r\n") < 0) { |
| 1897 return -1; | 1870 return -1; |
| 1898 } | 1871 } |
| 1899 m_File.Flush(); | 1872 m_File.Flush(); |
| 1900 return m_iStage = 100; | 1873 return m_iStage = 100; |
| 1901 } | 1874 } |
| 1902 | 1875 |
| 1903 void CPDF_Creator::Clear() { | 1876 void CPDF_Creator::Clear() { |
| 1904 m_pXRefStream.reset(); | 1877 m_pXRefStream.reset(); |
| 1905 m_File.Clear(); | 1878 m_File.Clear(); |
| 1906 m_NewObjNumArray.RemoveAll(); | 1879 m_NewObjNumArray.clear(); |
| 1907 m_pIDArray.reset(); | 1880 m_pIDArray.reset(); |
| 1908 } | 1881 } |
| 1909 | 1882 |
| 1910 bool CPDF_Creator::Create(const CFX_RetainPtr<IFX_WriteStream>& pFile, | 1883 bool CPDF_Creator::Create(const CFX_RetainPtr<IFX_WriteStream>& pFile, |
| 1911 uint32_t flags) { | 1884 uint32_t flags) { |
| 1912 m_File.AttachFile(pFile); | 1885 m_File.AttachFile(pFile); |
| 1913 return Create(flags); | 1886 return Create(flags); |
| 1914 } | 1887 } |
| 1915 | 1888 |
| 1916 bool CPDF_Creator::Create(uint32_t flags) { | 1889 bool CPDF_Creator::Create(uint32_t flags) { |
| 1917 m_dwFlags = flags; | 1890 m_dwFlags = flags; |
| 1918 m_iStage = 0; | 1891 m_iStage = 0; |
| 1919 m_Offset = 0; | 1892 m_Offset = 0; |
| 1920 m_dwLastObjNum = m_pDocument->GetLastObjNum(); | 1893 m_dwLastObjNum = m_pDocument->GetLastObjNum(); |
| 1921 m_ObjectOffset.Clear(); | 1894 m_ObjectOffset.Clear(); |
| 1922 m_NewObjNumArray.RemoveAll(); | 1895 m_NewObjNumArray.clear(); |
| 1923 InitID(); | 1896 InitID(); |
| 1924 if (flags & FPDFCREATE_PROGRESSIVE) | 1897 if (flags & FPDFCREATE_PROGRESSIVE) |
| 1925 return true; | 1898 return true; |
| 1926 return Continue(nullptr) > -1; | 1899 return Continue(nullptr) > -1; |
| 1927 } | 1900 } |
| 1928 | 1901 |
| 1929 void CPDF_Creator::InitID(bool bDefault) { | 1902 void CPDF_Creator::InitID(bool bDefault) { |
| 1930 CPDF_Array* pOldIDArray = m_pParser ? m_pParser->GetIDArray() : nullptr; | 1903 CPDF_Array* pOldIDArray = m_pParser ? m_pParser->GetIDArray() : nullptr; |
| 1931 bool bNewId = !m_pIDArray; | 1904 bool bNewId = !m_pIDArray; |
| 1932 if (bNewId) { | 1905 if (bNewId) { |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2013 m_pCryptoHandler = nullptr; | 1986 m_pCryptoHandler = nullptr; |
| 2014 } | 1987 } |
| 2015 void CPDF_Creator::ResetStandardSecurity() { | 1988 void CPDF_Creator::ResetStandardSecurity() { |
| 2016 if (!m_bLocalCryptoHandler) | 1989 if (!m_bLocalCryptoHandler) |
| 2017 return; | 1990 return; |
| 2018 | 1991 |
| 2019 delete m_pCryptoHandler; | 1992 delete m_pCryptoHandler; |
| 2020 m_pCryptoHandler = nullptr; | 1993 m_pCryptoHandler = nullptr; |
| 2021 m_bLocalCryptoHandler = false; | 1994 m_bLocalCryptoHandler = false; |
| 2022 } | 1995 } |
| OLD | NEW |