)]}'
{
  "commit": "bea37f1d647c6b17896eb3f0c210ac8dfc27b6d7",
  "tree": "2b15630e7b9ceb1905f3ec88d2a9c6c0f8f135f6",
  "parents": [
    "a29e2e8fe7e3935e23d2a03dc429cc9c2e68bfbe"
  ],
  "author": {
    "name": "Patrick Steinhardt",
    "email": "ps@pks.im",
    "time": "Tue Nov 04 15:36:13 2025 +0100"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Tue Nov 04 07:32:25 2025 -0800"
  },
  "message": "ref-filter: fix stale parsed objects\n\nIn 054f5f457e (ref-filter: parse objects on demand, 2025-10-23) we have\nstarted to skip parsing some objects in case we don\u0027t need to access\ntheir values in the first place. This was done by introducing a new\nmember `struct expand_data::maybe_object` that gets populated on demand\nvia `get_or_parse_object()`.\n\nThis has led to a regression though where the object now gets reused\nbecause we don\u0027t reset it properly. The `oi` structure is declared in\nglobal scope, and there is no single place where we reset it before\ninvoking `get_object()`. The consequence is that the `maybe_object`\nmember doesn\u0027t get reset across calls, so subsequent calls will end up\nreusing the same object.\n\nThis is only an issue for a subset of retrieved values, as not all of\nthe infrastructure ends up calling `get_or_parse_object()`. So the\neffect is limited, which is probably why the issue wasn\u0027t detected\nearlier.\n\nFix the issue by resetting `maybe_object` in `get_object()`.\n\nReported-by: Junio C Hamano \u003cgitster@pobox.com\u003e\nBased-on-patch-by: Jeff King \u003cpeff@peff.net\u003e\nSigned-off-by: Patrick Steinhardt \u003cps@pks.im\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7cfcd5c35549308dcee9c3654c858f5ebce02a36",
      "old_mode": 33188,
      "old_path": "ref-filter.c",
      "new_id": "d8667c569a18f15ad67270351beb857ffd5b45a7",
      "new_mode": 33188,
      "new_path": "ref-filter.c"
    },
    {
      "type": "modify",
      "old_id": "10835631ca76444436fb5aef267082fb226b70c6",
      "old_mode": 33261,
      "old_path": "t/t7004-tag.sh",
      "new_id": "d1388cfdf45b02eae2bd6ee4b4a4dc315867fe70",
      "new_mode": 33261,
      "new_path": "t/t7004-tag.sh"
    }
  ]
}
