Get rid of some needless pointer arithmetic in GenerateFileID(). We are starting to consider pFoo++ as a code smell. - Return a ByteString since all callers want one. - Slight reorder for easier reading. Change-Id: I98adb1c55aec9079063fcee248847bfdf8494c17 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/51933 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfapi/edit/cpdf_creator.cpp b/core/fpdfapi/edit/cpdf_creator.cpp index da3a9d3..3915c1b 100644 --- a/core/fpdfapi/edit/cpdf_creator.cpp +++ b/core/fpdfapi/edit/cpdf_creator.cpp
@@ -115,20 +115,17 @@ return WriteBlock(str.raw_str(), str.GetLength()); } -std::vector<uint8_t> GenerateFileID(uint32_t dwSeed1, uint32_t dwSeed2) { - std::vector<uint8_t> buffer(sizeof(uint32_t) * 4); - uint32_t* pBuffer = reinterpret_cast<uint32_t*>(buffer.data()); - void* pContext = FX_Random_MT_Start(dwSeed1); - for (int i = 0; i < 2; ++i) - *pBuffer++ = FX_Random_MT_Generate(pContext); - - FX_Random_MT_Close(pContext); - pContext = FX_Random_MT_Start(dwSeed2); - for (int i = 0; i < 2; ++i) - *pBuffer++ = FX_Random_MT_Generate(pContext); - - FX_Random_MT_Close(pContext); - return buffer; +ByteString GenerateFileID(uint32_t dwSeed1, uint32_t dwSeed2) { + uint32_t buffer[4]; + void* pContext1 = FX_Random_MT_Start(dwSeed1); + void* pContext2 = FX_Random_MT_Start(dwSeed2); + buffer[0] = FX_Random_MT_Generate(pContext1); + buffer[1] = FX_Random_MT_Generate(pContext1); + buffer[2] = FX_Random_MT_Generate(pContext2); + buffer[3] = FX_Random_MT_Generate(pContext2); + FX_Random_MT_Close(pContext1); + FX_Random_MT_Close(pContext2); + return ByteString(pdfium::as_bytes<uint32_t>(buffer)); } bool OutputIndex(IFX_ArchiveStream* archive, FX_FILESIZE offset) { @@ -600,9 +597,8 @@ if (pID1) { m_pIDArray->Add(pID1->Clone()); } else { - std::vector<uint8_t> buffer = + ByteString bsBuffer = GenerateFileID((uint32_t)(uintptr_t)this, m_dwLastObjNum); - ByteString bsBuffer(buffer.data(), buffer.size()); m_pIDArray->AddNew<CPDF_String>(bsBuffer, true); } @@ -612,9 +608,8 @@ m_pIDArray->Add(pID2->Clone()); return; } - std::vector<uint8_t> buffer = + ByteString bsBuffer = GenerateFileID((uint32_t)(uintptr_t)this, m_dwLastObjNum); - ByteString bsBuffer(buffer.data(), buffer.size()); m_pIDArray->AddNew<CPDF_String>(bsBuffer, true); return; }