)]}'
{
  "commit": "2f8eb917768c722b09fdcfacdee839dad3f7068a",
  "tree": "b4bc35c26c0601ee5fdab51c44a938f2d6d580b8",
  "parents": [
    "092276ce89098ead06db80975173191e5fee1826"
  ],
  "author": {
    "name": "Nexory",
    "email": "St4yl3r30@hotmail.de",
    "time": "Tue Aug 25 13:38:26 2026 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Aug 25 13:38:26 2026 +0200"
  },
  "message": "Keep every target of a \u0027thmb\u0027, \u0027auxl\u0027, \u0027cdsc\u0027 or \u0027prem\u0027 reference (#3331)\n\nA SingleItemTypeReferenceBox links to an array of to_item_IDs, and several\nboxes of one type may share a from_item_ID. libavif stored these four relations\nin a single valued field per item, and the parsing loop overwrote it per entry,\nso the target parsed last silently won and the others were dropped, with no\nerror and an exit code of zero.\n\nStore the references in a per item array instead, and turn the read sites into\nmembership checks. \u0027dimg\u0027 is unchanged: it refers in the opposite direction and\nalready refuses what it cannot represent.\n\nThe MinimizedImageBox path stored the one bit alpha_is_premultiplied value in\npremByID, which the decoder compares against the alpha item ID. That ID is 2 in\nthis path, so the comparison never matched and a premultiplied image decoded as\nstraight alpha, with no error and an exit code of zero.\n\nThe parameterized test in avifminitest.cc already compares a MinimizedImageBox\nagainst a regular MetaBox for the same image, and AreImagesEqual() compares\nalphaPremultiplied. No parameter set marks the alpha as premultiplied though, so\nthe flag was never exercised. Add a test that does.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "31d78411531655ddfa68084902e3569f3fdd16b7",
      "old_mode": 33188,
      "old_path": "CHANGELOG.md",
      "new_id": "745566bb0ef3915d1a7adb2cd140c090bca2b227",
      "new_mode": 33188,
      "new_path": "CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "405b24f9a63d7e109697e3925e9e996e1261f1a8",
      "old_mode": 33188,
      "old_path": "src/read.c",
      "new_id": "e92136988568c33a715c944c764899807fd2f6bb",
      "new_mode": 33188,
      "new_path": "src/read.c"
    },
    {
      "type": "modify",
      "old_id": "2b59153177f45c9a9731ba9c02d2abf32eff6d32",
      "old_mode": 33188,
      "old_path": "tests/data/README.md",
      "new_id": "c0875ff6cb192f7dbef1a4ae7e0a0fc78889e0cf",
      "new_mode": 33188,
      "new_path": "tests/data/README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "063c7eebbfe84e66f8b7c2ae40a8b08beaa8664e",
      "new_mode": 33188,
      "new_path": "tests/data/circle_auxl_two_targets.avif"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6d3b6d65640d1f84208265d919f92e8b4d43b638",
      "new_mode": 33188,
      "new_path": "tests/data/circle_cdsc_two_targets.avif"
    },
    {
      "type": "modify",
      "old_id": "28dfb269f66440d8e11a6d8a8df771327d7f398d",
      "old_mode": 33188,
      "old_path": "tests/gtest/avifmetadatatest.cc",
      "new_id": "7fc531ba470611638dd394201980c3a687638de7",
      "new_mode": 33188,
      "new_path": "tests/gtest/avifmetadatatest.cc"
    },
    {
      "type": "modify",
      "old_id": "32e4620b506d37436c8a5d1a82d95d96ae5c959c",
      "old_mode": 33188,
      "old_path": "tests/gtest/avifminitest.cc",
      "new_id": "6a7c159cdc1b01ce541aa45c5231fb40544323db",
      "new_mode": 33188,
      "new_path": "tests/gtest/avifminitest.cc"
    }
  ]
}
