)]}'
{
  "commit": "bd9ff698b99ccf6c6add2d202a62ac629251a461",
  "tree": "5e2d48293831f5c1234a46dde7d626fe558b53f9",
  "parents": [
    "0ea5f7bcb606080eddd974870ae5a7373af3814c"
  ],
  "author": {
    "name": "Frank Barchard",
    "email": "fbarchard@google.com",
    "time": "Fri Oct 02 18:00:48 2026 -0700"
  },
  "committer": {
    "name": "pdfium-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "pdfium-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Fri Oct 02 18:00:48 2026 -0700"
  },
  "message": "Hoist image width out of 24bpp loop and avoid 16-bpc aliasing in CPDF_DIB.\n\nIn CPDF_DIB::TranslateScanline24bpp(), stores through dest_scan\n(uint8_t) and the virtual call color_space_-\u003eGetRGBOrZerosOnError()\nmay alias any object in memory under C++ strict aliasing rules,\npreventing the compiler from hoisting GetWidth() out of the per-pixel\nloop and forcing a memory reload on every iteration. Cache GetWidth()\nin a local width variable before the loop.\n\nIn CPDF_DIB::TranslateScanline24bppDefaultDecode(), load the 16-bpc\nsrc channels into local uint8_t variables before writing to dest\n(matching fxcodec::ReverseRGB()), avoiding interleaved loads and\nstores when the compiler cannot prove src and dest do not overlap.\n\nCo-authored-by: Richard Winterton \u003crrwinterton@intel.com\u003e\nChange-Id: Ie605d688918b73054c7601a7373e480486859872\nReviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/159571\nReviewed-by: Lei Zhang \u003cthestig@chromium.org\u003e\nCommit-Queue: Lei Zhang \u003cthestig@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "977f24c0b2f1545ef3eadd04e39bc96fb1e4820b",
      "old_mode": 33188,
      "old_path": "core/fpdfapi/page/cpdf_dib.cpp",
      "new_id": "60224e2a4b73645f1970c488435b47979743dde1",
      "new_mode": 33188,
      "new_path": "core/fpdfapi/page/cpdf_dib.cpp"
    }
  ]
}
