diff options
author | Dan Sinclair <dsinclair@chromium.org> | 2017-05-10 13:59:14 -0400 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-05-10 19:41:00 +0000 |
commit | 5b590337e0778b49dd7092af4a283ed0f9c5a2e9 (patch) | |
tree | 4aae9dd27685bf2cca6954d5a1a7ef197466b808 /core/fpdfapi/parser/cpdf_array.cpp | |
parent | aa7022833db1a6e21b81fcca30b45ba652298f32 (diff) | |
download | pdfium-5b590337e0778b49dd7092af4a283ed0f9c5a2e9.tar.xz |
Store the offset in the archive buffer
This Cl moves the implementation of the archive buffer behind an
IFX_ArchiveStream interface. The buffer holds the current offset and the
offset parameter is removed from the CPDF_Creator and various other
methods.
Change-Id: Ia54e803b58bbfb6ef03fec4a940d2c056d541356
Reviewed-on: https://pdfium-review.googlesource.com/5255
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'core/fpdfapi/parser/cpdf_array.cpp')
-rw-r--r-- | core/fpdfapi/parser/cpdf_array.cpp | 28 |
1 files changed, 9 insertions, 19 deletions
diff --git a/core/fpdfapi/parser/cpdf_array.cpp b/core/fpdfapi/parser/cpdf_array.cpp index aa10588f87..698cd6d0d0 100644 --- a/core/fpdfapi/parser/cpdf_array.cpp +++ b/core/fpdfapi/parser/cpdf_array.cpp @@ -194,31 +194,21 @@ CPDF_Object* CPDF_Array::Add(std::unique_ptr<CPDF_Object> pObj) { return pRet; } -bool CPDF_Array::WriteTo(CFX_FileBufferArchive* archive, - FX_FILESIZE* offset) const { - if (archive->AppendString("[") < 0) +bool CPDF_Array::WriteTo(IFX_ArchiveStream* archive) const { + if (!archive->WriteString("[")) return false; - *offset += 1; for (size_t i = 0; i < GetCount(); ++i) { CPDF_Object* pElement = GetObjectAt(i); if (!pElement->IsInline()) { - if (archive->AppendString(" ") < 0) - return false; - - int32_t len = archive->AppendDWord(pElement->GetObjNum()); - if (len < 0) - return false; - if (archive->AppendString(" 0 R") < 0) - return false; - *offset += len + 5; - } else { - if (!pElement->WriteTo(archive, offset)) + if (!archive->WriteString(" ") || + !archive->WriteDWord(pElement->GetObjNum()) || + !archive->WriteString(" 0 R")) { return false; + } + } else if (!pElement->WriteTo(archive)) { + return false; } } - if (archive->AppendString("]") < 0) - return false; - *offset += 1; - return true; + return archive->WriteString("]"); } |