)]}'
{
  "commit": "fbf10f0d968beb56622eb4927bace53a0e931189",
  "tree": "b6c469c6a24c6feef0affba41f61f93adeb414c9",
  "parents": [
    "e44712755dd9281656009d4931cf7ae12201ae21"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Mon Feb 12 16:57:18 2024 -0500"
  },
  "committer": {
    "name": "Boringssl LUCI CQ",
    "email": "boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Thu Feb 22 05:08:48 2024 +0000"
  },
  "message": "Make an internal RefCounted base class for libssl\n\nThis is still a bit more tedious than I\u0027d like, but we\u0027ve got three of\nthese and I\u0027m about to add a fourth. Add something like Chromium\u0027s base\nclass. But where Chromium integrates the base class directly with\nscoped_refptr (giving a place for a static_assert that you did the\nsubclassing right), we don\u0027t quite have that since we need to integrate\nwith the external C API.\n\nInstead, use the \"passkey\" pattern and have RefCounted\u003cT\u003e\u0027s protected\nconstructor take a struct that only T can construct. The passkey ensures\nthat only T can construct RefCounted\u003cT\u003e, and the protectedness ensures\nthat T subclassed RefCounted\u003cT\u003e. (I think the latter already comes from\nthe static_cast in DecRef, but may as well.)\n\nChange-Id: Icf4cbc7d4168010ee46dfa3a7b0a2e7c20aaf383\nReviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/66369\nReviewed-by: Bob Beck \u003cbbe@google.com\u003e\nCommit-Queue: David Benjamin \u003cdavidben@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a5492e9a0c061d16a0a01d1c7dfa2451c83b062a",
      "old_mode": 33188,
      "old_path": "ssl/encrypted_client_hello.cc",
      "new_id": "8c4a42ce838aa5d65e5063a31de3ced43d9213a0",
      "new_mode": 33188,
      "new_path": "ssl/encrypted_client_hello.cc"
    },
    {
      "type": "modify",
      "old_id": "f1d02a0fbc7e8627131fa2c8c3ae10fb9366de00",
      "old_mode": 33188,
      "old_path": "ssl/internal.h",
      "new_id": "dcc546bd3639a0fe46cca4cba69586667c4bf101",
      "new_mode": 33188,
      "new_path": "ssl/internal.h"
    },
    {
      "type": "modify",
      "old_id": "58b68e6759650b9a2a3915aa343451bdd1ec1e89",
      "old_mode": 33188,
      "old_path": "ssl/ssl_lib.cc",
      "new_id": "91741fdf5bc29a98d6573301d0e8402713716779",
      "new_mode": 33188,
      "new_path": "ssl/ssl_lib.cc"
    },
    {
      "type": "modify",
      "old_id": "979ac5972f52b20117c2a004bdcc77e447b6b40b",
      "old_mode": 33188,
      "old_path": "ssl/ssl_session.cc",
      "new_id": "5275b69c474134752a8d85d22e62b191c528c0f5",
      "new_mode": 33188,
      "new_path": "ssl/ssl_session.cc"
    }
  ]
}
