)]}'
{
  "commit": "c072587a609db822697f05b81316bdb862678282",
  "tree": "a61a3287519d817f11516e912f6c945b3e5b0c4f",
  "parents": [
    "aad51b12a1ea7c2e65d73a4bb8def2daec30a170"
  ],
  "author": {
    "name": "Paul Smith",
    "email": "psmith@gnu.org",
    "time": "Wed Aug 27 01:15:02 2025 -0400"
  },
  "committer": {
    "name": "Paul Smith",
    "email": "psmith@gnu.org",
    "time": "Wed Aug 27 01:30:14 2025 -0400"
  },
  "message": "[SV 67046] Don\u0027t modify the hash table when inside hash_map*()\n\nIt\u0027s illegal for the user-supplied function to modify the hash table\nwhile executing hash_map*() methods.  snap_file() may add elements\ndue to EXTRA_PREREQS, so we can\u0027t call it via hash_map_args().\n\nDiagnosis and test by Shim Manning \u003cshimmanning@gmail.com\u003e\nPossible fix by Dmitry Goncharov \u003cdgoncharov@users.sf.net\u003e\n\n* src/hash.h (hash_table): Remember when we\u0027re in hash_map*().\n* src/hash.c (hash_init): Initialize the in-map value to false.\n(hash_map): Set the in-map value to true when walking the map.\n(hash_map_arg): Ditto.\n(hash_insert_at): Assert we\u0027re not in hash_map*()\n(hash_free_items): Ditto.\n(hash_delete_items): Ditto.\n(hash_free): Ditto.\n* src/file.c (snap_deps): Use hash_dump() to create a copy of the\nhash and walk that to call snap_file(), so we can add more files.\n(snap_file): Since we\u0027re calling it directly, don\u0027t use void* args.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "65517d0714bbb5706256a5e8e235d66259a16a95",
      "old_mode": 33188,
      "old_path": "src/file.c",
      "new_id": "447662a7b6d5b355b11267c5f34958a0989de4bf",
      "new_mode": 33188,
      "new_path": "src/file.c"
    },
    {
      "type": "modify",
      "old_id": "a118552a969d56d567e41885d271545de5ca9751",
      "old_mode": 33188,
      "old_path": "src/hash.c",
      "new_id": "a0b370f6af96ab6a5bc4a45f89c4510944f5e5de",
      "new_mode": 33188,
      "new_path": "src/hash.c"
    },
    {
      "type": "modify",
      "old_id": "1bbda0f7d9cf48caa0fce5bc0ebaacd107df2cee",
      "old_mode": 33188,
      "old_path": "src/hash.h",
      "new_id": "27b202a4ac972e820d6c58b017aea39216ff41cb",
      "new_mode": 33188,
      "new_path": "src/hash.h"
    },
    {
      "type": "modify",
      "old_id": "2f72be30898e74054a3340d013734fbfba8e78d2",
      "old_mode": 33188,
      "old_path": "tests/scripts/variables/EXTRA_PREREQS",
      "new_id": "a34abd93954e8f35a807a9ea4c47513febac87c4",
      "new_mode": 33188,
      "new_path": "tests/scripts/variables/EXTRA_PREREQS"
    }
  ]
}
