Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(200)

Unified Diff: core/fpdfapi/parser/cpdf_stream.cpp

Issue 2520493002: Make CPDF_Stream() take unique_ptr's to its dictionary. (Closed)
Patch Set: rebase, lint, fix new test. Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « core/fpdfapi/parser/cpdf_stream.h ('k') | core/fpdfapi/parser/cpdf_syntax_parser.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: core/fpdfapi/parser/cpdf_stream.cpp
diff --git a/core/fpdfapi/parser/cpdf_stream.cpp b/core/fpdfapi/parser/cpdf_stream.cpp
index fd7f08f688920d60641a9dea52fb80dcd9f7f5db..7a54fcf8ff3ef8ebc8109c0652bab8714f15dc85 100644
--- a/core/fpdfapi/parser/cpdf_stream.cpp
+++ b/core/fpdfapi/parser/cpdf_stream.cpp
@@ -6,6 +6,8 @@
#include "core/fpdfapi/parser/cpdf_stream.h"
+#include <utility>
+
#include "core/fpdfapi/parser/cpdf_dictionary.h"
#include "core/fpdfapi/parser/cpdf_number.h"
#include "core/fpdfapi/parser/cpdf_stream_acc.h"
@@ -15,8 +17,10 @@
CPDF_Stream::CPDF_Stream() {}
-CPDF_Stream::CPDF_Stream(uint8_t* pData, uint32_t size, CPDF_Dictionary* pDict)
- : m_dwSize(size), m_pDict(pDict), m_pDataBuf(pData) {}
+CPDF_Stream::CPDF_Stream(uint8_t* pData,
+ uint32_t size,
+ std::unique_ptr<CPDF_Dictionary> pDict)
+ : m_dwSize(size), m_pDict(std::move(pDict)), m_pDataBuf(pData) {}
CPDF_Stream::~CPDF_Stream() {
m_ObjNum = kInvalidObjNum;
@@ -46,8 +50,8 @@ const CPDF_Stream* CPDF_Stream::AsStream() const {
void CPDF_Stream::InitStream(const uint8_t* pData,
uint32_t size,
- CPDF_Dictionary* pDict) {
- m_pDict.reset(pDict);
+ std::unique_ptr<CPDF_Dictionary> pDict) {
+ m_pDict = std::move(pDict);
m_bMemoryBased = true;
m_pFile = nullptr;
m_pDataBuf.reset(FX_Alloc(uint8_t, size));
@@ -59,8 +63,8 @@ void CPDF_Stream::InitStream(const uint8_t* pData,
}
void CPDF_Stream::InitStreamFromFile(IFX_SeekableReadStream* pFile,
- CPDF_Dictionary* pDict) {
- m_pDict.reset(pDict);
+ std::unique_ptr<CPDF_Dictionary> pDict) {
+ m_pDict = std::move(pDict);
m_bMemoryBased = false;
m_pDataBuf.reset();
m_pFile = pFile;
@@ -79,14 +83,16 @@ std::unique_ptr<CPDF_Object> CPDF_Stream::CloneNonCyclic(
pVisited->insert(this);
CPDF_StreamAcc acc;
acc.LoadAllData(this, true);
+
uint32_t streamSize = acc.GetSize();
CPDF_Dictionary* pDict = GetDict();
+ std::unique_ptr<CPDF_Dictionary> pNewDict;
if (pDict && !pdfium::ContainsKey(*pVisited, pDict)) {
- pDict = ToDictionary(static_cast<CPDF_Object*>(pDict)
- ->CloneNonCyclic(bDirect, pVisited)
- .release());
+ pNewDict = ToDictionary(
+ static_cast<CPDF_Object*>(pDict)->CloneNonCyclic(bDirect, pVisited));
}
- return pdfium::MakeUnique<CPDF_Stream>(acc.DetachData(), streamSize, pDict);
+ return pdfium::MakeUnique<CPDF_Stream>(acc.DetachData(), streamSize,
+ std::move(pNewDict));
}
void CPDF_Stream::SetData(const uint8_t* pData, uint32_t size) {
« no previous file with comments | « core/fpdfapi/parser/cpdf_stream.h ('k') | core/fpdfapi/parser/cpdf_syntax_parser.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698