)]}'
{
  "commit": "25d0dcf7b6516fbe7b3c7af0673b33620e2b9a18",
  "tree": "36729071b7326c9753317bbfa3f7f5f7cd948e02",
  "parents": [
    "fde20e170bebdde902d38dd577a0543e11b6d4d4"
  ],
  "author": {
    "name": "Lei Zhang",
    "email": "thestig@chromium.org",
    "time": "Tue May 14 03:22:02 2024 +0000"
  },
  "committer": {
    "name": "Pdfium LUCI CQ",
    "email": "pdfium-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Tue May 14 03:22:02 2024 +0000"
  },
  "message": "M125: Fix yet another edited PDF that regressed\n\nRework CPDF_Parser cross reference table loading code yet again to make\nthe bug_335309995.pdf pixel test pass, while not causing any other tests\nto regress.\n\nFor starters, get rid of the code where cross reference stream entries\ndo not overwrite existing entries. That logic forced cross reference\nstreams to be parsed in reverse order, which is awkward when the cross\nreference tables are parsed in the normal order.\n\nWith that sorted out, LoadAllSecondaryCrossRefStreams() and\nLoadAllCrossRefStreams() are no longer useful, as they parsed cross\nreference data in reverse order. Instead, let LoadAllCrossRefTables()\ntake over their duties with more cross reference stream parsing logic.\nAs such, rename it to LoadAllCrossRefTablesAndStreams().\n\nThen flip the ordering when reading cross reference data updates, so\ntables have precedence over streams, per PDF spec.\n\nApply the same change to CPDF_Parser::LoadLinearizedAllCrossRefTable()\nas well.\n\nBug: 330885080, 335309995, 336517370\nChange-Id: I1f44cee17626104f78aaceca403f6bf1a3a09802\nReviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/118571\nReviewed-by: Thomas Sepez \u003ctsepez@google.com\u003e\nReviewed-by: Tom Sepez \u003ctsepez@chromium.org\u003e\nCommit-Queue: Lei Zhang \u003cthestig@chromium.org\u003e\n(cherry picked from commit 02ff1756cfb2c2b8d900d98efd54a4d726b805b6)\nReviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/119090\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "af52d37973d85713d01690a164a40033f9d251ef",
      "old_mode": 33188,
      "old_path": "core/fpdfapi/parser/cpdf_cross_ref_table.cpp",
      "new_id": "b46d3d5bde060ef9ae617e21a81e1ed60ddda48e",
      "new_mode": 33188,
      "new_path": "core/fpdfapi/parser/cpdf_cross_ref_table.cpp"
    },
    {
      "type": "modify",
      "old_id": "0850f7e013055afbc94d6555616e86c7234c26a5",
      "old_mode": 33188,
      "old_path": "core/fpdfapi/parser/cpdf_data_avail.cpp",
      "new_id": "d1121fb48d56b2fb6ca9797e8acb75e1c4574271",
      "new_mode": 33188,
      "new_path": "core/fpdfapi/parser/cpdf_data_avail.cpp"
    },
    {
      "type": "modify",
      "old_id": "61861ded23480228ba1afab9c94f7f7b5710b893",
      "old_mode": 33188,
      "old_path": "core/fpdfapi/parser/cpdf_parser.cpp",
      "new_id": "c040bddbf258bf9f0f9c94e2a8690e24056dd270",
      "new_mode": 33188,
      "new_path": "core/fpdfapi/parser/cpdf_parser.cpp"
    },
    {
      "type": "modify",
      "old_id": "26abc7d47e339608a6f0304e0370468420be3f77",
      "old_mode": 33188,
      "old_path": "core/fpdfapi/parser/cpdf_parser.h",
      "new_id": "96e1a3e558d1539d96336dd6853ec11d32f0a50a",
      "new_mode": 33188,
      "new_path": "core/fpdfapi/parser/cpdf_parser.h"
    },
    {
      "type": "modify",
      "old_id": "b42d7f132f064cf6b673aa81c70485896df7a4dd",
      "old_mode": 33188,
      "old_path": "core/fpdfapi/parser/cpdf_parser_unittest.cpp",
      "new_id": "dbf470dd85ac75f2c86e640ea3321f0eb2bec37c",
      "new_mode": 33188,
      "new_path": "core/fpdfapi/parser/cpdf_parser_unittest.cpp"
    }
  ]
}
