)]}'
{
  "commit": "8b6e39696f434e63e8684d9a920062d62cc8054f",
  "tree": "ef3ab82831747067921fe788e0ace6851da8a336",
  "parents": [
    "86c311607aaed474765627185ff549a337894d42"
  ],
  "author": {
    "name": "Slava Egorov",
    "email": "vegorov@google.com",
    "time": "Wed Jun 28 13:06:51 2023 +0000"
  },
  "committer": {
    "name": "Commit Queue",
    "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Wed Jun 28 13:06:51 2023 +0000"
  },
  "message": "[vm/io] Avoid leaking Handle::data_ready_ on Windows.\n\nHandle::data_ready_ contains bytes which are ready to be sent to Dart\nside. Not all code paths fully drain this buffer and delete it\nbefore destroying the handle, for example directory watch implementation\nwas prone to leaking data_ready_ when subscription was cancelled.\n\nThis CL switches the code to use unique_ptr to hold on to data_ready_\nwhich makes sure that it is deleted when Handle is destroyed.\n\nThe code would benefit from holding all OverlappedBuffer instances\nthrough unique_ptr but that is a much larger refactoring which\nwe leave for a later date.\n\nFixes https://github.com/dart-lang/sdk/issues/52715\n\nTEST\u003dstandalone{,_2}/regress_52715_test\n\nBug: 52715\nCq-Include-Trybots: luci.dart.try:vm-win-release-x64-try,vm-win-debug-x64-try,vm-aot-win-release-x64-try,analyzer-win-release-try\nChange-Id: Ie8d728b823de7e8f9de1489898e270580c2af269\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/311841\nCommit-Queue: Slava Egorov \u003cvegorov@google.com\u003e\nCommit-Queue: Martin Kustermann \u003ckustermann@google.com\u003e\nReviewed-by: Martin Kustermann \u003ckustermann@google.com\u003e\nAuto-Submit: Slava Egorov \u003cvegorov@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "07314cd9ce56863633a795aaf167d3d3088d8144",
      "old_mode": 33188,
      "old_path": "runtime/bin/eventhandler_win.cc",
      "new_id": "df164ea89a04b457e717d726e09bd9dd4bc6b02d",
      "new_mode": 33188,
      "new_path": "runtime/bin/eventhandler_win.cc"
    },
    {
      "type": "modify",
      "old_id": "f7242f944f182bb0d9f62b85323bfa38a538b33a",
      "old_mode": 33188,
      "old_path": "runtime/bin/eventhandler_win.h",
      "new_id": "11210a80749b9bf3b2eb8415f6d9b771082cfd9f",
      "new_mode": 33188,
      "new_path": "runtime/bin/eventhandler_win.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fb6341030a0f650bd27668d5efca24c05c2fd00e",
      "new_mode": 33188,
      "new_path": "tests/standalone/regress_52715_test.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6bf7043743c81f92844261435cd10259ed388899",
      "new_mode": 33188,
      "new_path": "tests/standalone_2/regress_52715_test.dart"
    }
  ]
}
