From 28f97ff783c16f3391384ce97b765ce4eb310ac7 Mon Sep 17 00:00:00 2001 From: tsepez Date: Mon, 4 Apr 2016 16:41:35 -0700 Subject: Make down-conversion explicit from CFX_ByteString to CFX_ByteStringC. Having this happen implicitly can be dangerous because the lifetime has to be considered; we should have caught the "red bots" in https://codereview.chromium.org/1847333004/#ps60001 at compile time. Review URL: https://codereview.chromium.org/1853233002 --- .../fpdf_edit/cpdf_pagecontentgenerator.cpp | 5 ++-- core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp | 30 +++++++++++++--------- core/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp | 2 +- 3 files changed, 22 insertions(+), 15 deletions(-) (limited to 'core/fpdfapi/fpdf_edit') diff --git a/core/fpdfapi/fpdf_edit/cpdf_pagecontentgenerator.cpp b/core/fpdfapi/fpdf_edit/cpdf_pagecontentgenerator.cpp index 6c5339128b..af79fd31c1 100644 --- a/core/fpdfapi/fpdf_edit/cpdf_pagecontentgenerator.cpp +++ b/core/fpdfapi/fpdf_edit/cpdf_pagecontentgenerator.cpp @@ -74,12 +74,13 @@ CFX_ByteString CPDF_PageContentGenerator::RealizeResource( int idnum = 1; while (1) { name.Format("FX%c%d", szType[0], idnum); - if (!pResList->KeyExist(name)) { + if (!pResList->KeyExist(name.AsByteStringC())) { break; } idnum++; } - pResList->AddReference(name, m_pDocument, pResourceObj->GetObjNum()); + pResList->AddReference(name.AsByteStringC(), m_pDocument, + pResourceObj->GetObjNum()); return name; } void CPDF_PageContentGenerator::ProcessImage(CFX_ByteTextBuf& buf, diff --git a/core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp b/core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp index 21934d35c4..323602b0e1 100644 --- a/core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp +++ b/core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp @@ -54,7 +54,7 @@ int32_t PDF_CreatorAppendObject(const CPDF_Object* pObj, if (pFile->AppendString(" ") < 0) { return -1; } - if ((len = pFile->AppendString(pObj->GetString())) < 0) { + if ((len = pFile->AppendString(pObj->GetString().AsByteStringC())) < 0) { return -1; } offset += len + 1; @@ -62,7 +62,8 @@ int32_t PDF_CreatorAppendObject(const CPDF_Object* pObj, case CPDF_Object::STRING: { CFX_ByteString str = pObj->GetString(); FX_BOOL bHex = pObj->AsString()->IsHex(); - if ((len = pFile->AppendString(PDF_EncodeString(str, bHex))) < 0) { + if ((len = pFile->AppendString( + PDF_EncodeString(str, bHex).AsByteStringC())) < 0) { return -1; } offset += len; @@ -73,7 +74,8 @@ int32_t PDF_CreatorAppendObject(const CPDF_Object* pObj, return -1; } CFX_ByteString str = pObj->GetString(); - if ((len = pFile->AppendString(PDF_NameEncode(str))) < 0) { + if ((len = pFile->AppendString(PDF_NameEncode(str).AsByteStringC())) < + 0) { return -1; } offset += len + 1; @@ -132,7 +134,8 @@ int32_t PDF_CreatorAppendObject(const CPDF_Object* pObj, if (pFile->AppendString("/") < 0) { return -1; } - if ((len = pFile->AppendString(PDF_NameEncode(key))) < 0) { + if ((len = pFile->AppendString(PDF_NameEncode(key).AsByteStringC())) < + 0) { return -1; } offset += len + 1; @@ -211,7 +214,8 @@ int32_t PDF_CreatorWriteTrailer(CPDF_Document* pDocument, if (pFile->AppendString(("/")) < 0) { return -1; } - if ((len = pFile->AppendString(PDF_NameEncode(key))) < 0) { + if ((len = pFile->AppendString(PDF_NameEncode(key).AsByteStringC())) < + 0) { return -1; } offset += len + 1; @@ -1114,7 +1118,7 @@ int32_t CPDF_Creator::WriteDirectObj(uint32_t objnum, if (m_File.AppendString(" ") < 0) { return -1; } - if ((len = m_File.AppendString(pObj->GetString())) < 0) { + if ((len = m_File.AppendString(pObj->GetString().AsByteStringC())) < 0) { return -1; } m_Offset += len + 1; @@ -1124,7 +1128,7 @@ int32_t CPDF_Creator::WriteDirectObj(uint32_t objnum, FX_BOOL bHex = pObj->AsString()->IsHex(); if (!m_pCryptoHandler || !bEncrypt) { CFX_ByteString content = PDF_EncodeString(str, bHex); - if ((len = m_File.AppendString(content)) < 0) { + if ((len = m_File.AppendString(content.AsByteStringC())) < 0) { return -1; } m_Offset += len; @@ -1136,7 +1140,7 @@ int32_t CPDF_Creator::WriteDirectObj(uint32_t objnum, CFX_ByteString content = PDF_EncodeString( CFX_ByteString((const FX_CHAR*)encryptor.m_pData, encryptor.m_dwSize), bHex); - if ((len = m_File.AppendString(content)) < 0) { + if ((len = m_File.AppendString(content.AsByteStringC())) < 0) { return -1; } m_Offset += len; @@ -1176,7 +1180,8 @@ int32_t CPDF_Creator::WriteDirectObj(uint32_t objnum, return -1; } CFX_ByteString str = pObj->GetString(); - if ((len = m_File.AppendString(PDF_NameEncode(str))) < 0) { + if ((len = m_File.AppendString(PDF_NameEncode(str).AsByteStringC())) < + 0) { return -1; } m_Offset += len + 1; @@ -1240,7 +1245,8 @@ int32_t CPDF_Creator::WriteDirectObj(uint32_t objnum, if (m_File.AppendString("/") < 0) { return -1; } - if ((len = m_File.AppendString(PDF_NameEncode(key))) < 0) { + if ((len = m_File.AppendString(PDF_NameEncode(key).AsByteStringC())) < + 0) { return -1; } m_Offset += len + 1; @@ -1642,7 +1648,7 @@ int32_t CPDF_Creator::WriteDoc_Stage3(IFX_Pause* pPause) { str = m_ObjectOffset.GetPtrAt(1) ? "xref\r\n" : "xref\r\n0 1\r\n0000000000 65535 f\r\n"; - if (m_File.AppendString(str) < 0) { + if (m_File.AppendString(str.AsByteStringC()) < 0) { return -1; } m_Pos = (void*)(uintptr_t)1; @@ -1771,7 +1777,7 @@ int32_t CPDF_Creator::WriteDoc_Stage4(IFX_Pause* pPause) { if (m_File.AppendString(("/")) < 0) { return -1; } - if (m_File.AppendString(PDF_NameEncode(key)) < 0) { + if (m_File.AppendString(PDF_NameEncode(key).AsByteStringC()) < 0) { return -1; } if (pValue->GetObjNum()) { diff --git a/core/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp b/core/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp index 0f75cb04a8..d70c04c690 100644 --- a/core/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp +++ b/core/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp @@ -1124,7 +1124,7 @@ CPDF_Font* CPDF_Document::AddStandardFont(const FX_CHAR* font, CFX_ByteString name(font); if (PDF_GetStandardFontName(&name) < 0) return nullptr; - return GetPageData()->GetStandardFont(name, pEncoding); + return GetPageData()->GetStandardFont(name.AsByteStringC(), pEncoding); } void CPDF_Document::DeletePage(int iPage) { -- cgit v1.2.3