Index: core/fpdfapi/fpdf_parser/cfdf_document.cpp |
diff --git a/core/fpdfapi/fpdf_parser/cfdf_document.cpp b/core/fpdfapi/fpdf_parser/cfdf_document.cpp |
index 3039c329386283e8292867097b05d7720f4ad719..d4f49f659bdaedbf912909aae07516c7e45c2a3f 100644 |
--- a/core/fpdfapi/fpdf_parser/cfdf_document.cpp |
+++ b/core/fpdfapi/fpdf_parser/cfdf_document.cpp |
@@ -28,22 +28,21 @@ CFDF_Document* CFDF_Document::CreateNewDoc() { |
pDoc->m_pRootDict->SetAt("FDF", pFDFDict); |
return pDoc; |
} |
+ |
CFDF_Document* CFDF_Document::ParseFile(IFX_FileRead* pFile, FX_BOOL bOwnFile) { |
- if (!pFile) { |
- return NULL; |
- } |
- CFDF_Document* pDoc = new CFDF_Document; |
+ if (!pFile) |
+ return nullptr; |
+ |
+ std::unique_ptr<CFDF_Document> pDoc(new CFDF_Document); |
pDoc->ParseStream(pFile, bOwnFile); |
- if (!pDoc->m_pRootDict) { |
- delete pDoc; |
- return NULL; |
- } |
- return pDoc; |
+ return pDoc->m_pRootDict ? pDoc.release() : nullptr; |
} |
+ |
CFDF_Document* CFDF_Document::ParseMemory(const uint8_t* pData, uint32_t size) { |
return CFDF_Document::ParseFile(FX_CreateMemoryStream((uint8_t*)pData, size), |
TRUE); |
} |
+ |
void CFDF_Document::ParseStream(IFX_FileRead* pFile, FX_BOOL bOwnFile) { |
m_pFile = pFile; |
m_bOwnFile = bOwnFile; |
@@ -55,26 +54,25 @@ void CFDF_Document::ParseStream(IFX_FileRead* pFile, FX_BOOL bOwnFile) { |
if (bNumber) { |
uint32_t objnum = FXSYS_atoui(word.c_str()); |
word = parser.GetNextWord(&bNumber); |
- if (!bNumber) { |
+ if (!bNumber) |
break; |
- } |
+ |
word = parser.GetNextWord(nullptr); |
- if (word != "obj") { |
+ if (word != "obj") |
break; |
- } |
+ |
CPDF_Object* pObj = parser.GetObject(this, objnum, 0, true); |
- if (!pObj) { |
+ if (!pObj) |
break; |
- } |
+ |
InsertIndirectObject(objnum, pObj); |
word = parser.GetNextWord(nullptr); |
- if (word != "endobj") { |
+ if (word != "endobj") |
break; |
- } |
} else { |
- if (word != "trailer") { |
+ if (word != "trailer") |
break; |
- } |
+ |
if (CPDF_Dictionary* pMainDict = |
ToDictionary(parser.GetObject(this, 0, 0, true))) { |
m_pRootDict = pMainDict->GetDictBy("Root"); |
@@ -84,6 +82,7 @@ void CFDF_Document::ParseStream(IFX_FileRead* pFile, FX_BOOL bOwnFile) { |
} |
} |
} |
+ |
FX_BOOL CFDF_Document::WriteBuf(CFX_ByteTextBuf& buf) const { |
if (!m_pRootDict) { |
return FALSE; |