)]}'
{
  "commit": "66f8f3760f02cb596b28e552fc4f95cd79586b7a",
  "tree": "2a2c1e95994d10e726e45f9987990337c28dbef9",
  "parents": [
    "b863457bc697d9fd07fb62a6ec276840d7e7a747"
  ],
  "author": {
    "name": "Henry Schreiner",
    "email": "henryfs@princeton.edu",
    "time": "Sat Aug 29 14:08:37 2026 -0400"
  },
  "committer": {
    "name": "Henry Schreiner",
    "email": "henryfs@princeton.edu",
    "time": "Sat Aug 29 14:08:37 2026 -0400"
  },
  "message": "fix: free lazily allocated storage on failed init and only permit lazy allocation for old-style constructors\n\nIf an old-style placement-new `__init__`/`__setstate__` failed after\n`self` was loaded, the lazily allocated storage stayed behind with a\nnull-holder instance, so the uninitialized-value guard never fired again\nand later use read uninitialized memory. `instance_construction_scope`\nnow tracks the constructor\u0027s `value_and_holder` and frees storage that\nwas lazily allocated during a construction that did not complete.\n\nAlso arm the scope only when the overload chain contains an old-style\nconstructor. New-style constructors receive `self` directly and never\nneed lazy allocation, so reentrant loads of the half-built instance now\nraise `ValueError` instead of handing out uninitialized storage.\n\nAssisted-by: ClaudeCode:claude-fable-5\nClaude-Session: https://claude.ai/code/session_01TQXCSykMn5EL7sc6VgTUTC\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3cdd3a9d55cf1f9346a0f3123e272ca969fa15d7",
      "old_mode": 33188,
      "old_path": "include/pybind11/detail/type_caster_base.h",
      "new_id": "4657a892babd3da357cf3c1232ed8b5711fed9f7",
      "new_mode": 33188,
      "new_path": "include/pybind11/detail/type_caster_base.h"
    },
    {
      "type": "modify",
      "old_id": "dc50d6d577d444fe8934a7cde46d6dfd9151bbb4",
      "old_mode": 33188,
      "old_path": "include/pybind11/pybind11.h",
      "new_id": "9e4a91b40500c9eb68e212fec7df124e938222ce",
      "new_mode": 33188,
      "new_path": "include/pybind11/pybind11.h"
    },
    {
      "type": "modify",
      "old_id": "1bdc41ce799be2ff27b284eff6d74ec1c1507986",
      "old_mode": 33188,
      "old_path": "tests/test_class.cpp",
      "new_id": "15217802d87bcf823aaf917762dc3c17d2c62106",
      "new_mode": 33188,
      "new_path": "tests/test_class.cpp"
    },
    {
      "type": "modify",
      "old_id": "ad84715677bff74d427da853ce71044b7a7c3c99",
      "old_mode": 33188,
      "old_path": "tests/test_class.py",
      "new_id": "bb606eee65f7e2ea446d7c587f067c719d6c37d0",
      "new_mode": 33188,
      "new_path": "tests/test_class.py"
    }
  ]
}
