)]}'
{
  "commit": "f5e74fc1e007b8f625d91e40c160785580de8f60",
  "tree": "ce9da2c80c13a0718605019c098e2a3b775b814a",
  "parents": [
    "3bdee70a9c1490ea011c6fb65193b2c7e242d26d"
  ],
  "author": {
    "name": "Sami Kortelainen",
    "email": "sami.kortelainen@piceasoft.com",
    "time": "Sun Feb 22 03:39:54 2026 +0100"
  },
  "committer": {
    "name": "Nikias Bassen",
    "email": "nikias@gmx.li",
    "time": "Sun Feb 22 03:39:54 2026 +0100"
  },
  "message": "xplist: Convert nested {CF$UID:\u003cint\u003e} dicts to PLIST_UID safely\n\nConvert single-entry { \"CF$UID\" : \u003cinteger\u003e } dictionaries to PLIST_UID\nnodes when closing a dict in the XML parser.\n\nRefactor node cleanup logic:\n- Split plist_free_data() into internal _plist_free_data()\n- Introduce plist_free_children() to release child nodes separately\n- Update plist_set_element_val() to free children before changing\n  container node types\n- Ensure PLIST_DICT hashtables do not free values (assert + force\n  free_func \u003d NULL)\n\nThis avoids in-place container mutation issues and ensures child\nnodes and container metadata are released correctly before\nchanging node type.\n\nCo-authored-by: Sami Kortelainen \u003csami.kortelainen@piceasoft.com\u003e\nCo-authored-by: Nikias Bassen \u003cnikias@gmx.li\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "82161f15921000efc7038f9941b49d7b4b69058f",
      "old_mode": 33188,
      "old_path": "src/plist.c",
      "new_id": "7697a75db03cf89a7bd773399d801661626cd0fa",
      "new_mode": 33188,
      "new_path": "src/plist.c"
    },
    {
      "type": "modify",
      "old_id": "73e2b9f4a5d99ebd9aa59ccb15d5194670253c85",
      "old_mode": 33188,
      "old_path": "src/xplist.c",
      "new_id": "a445dc51ae3a59c1b2a018a16609e7d977f49036",
      "new_mode": 33188,
      "new_path": "src/xplist.c"
    }
  ]
}
