)]}'
{
  "commit": "4edb1ce20c323c0e91cdbb0f309f15550eaafb5d",
  "tree": "a2d03feea86522a09b004a6aab82f4fd9914b954",
  "parents": [
    "ef2dfd47ba3887d3767bab767e50df751a7d2e9b"
  ],
  "author": {
    "name": "Jason Rhinelander",
    "email": "jason@imaginary.ca",
    "time": "Wed Jun 07 12:35:39 2017 -0300"
  },
  "committer": {
    "name": "Jason Rhinelander",
    "email": "jason@imaginary.ca",
    "time": "Thu Jun 08 16:42:06 2017 -0300"
  },
  "message": "Destroy internals if created during Py_Finalize()\n\nPy_Finalize could potentially invoke code that calls `get_internals()`,\nwhich could create a new internals object if one didn\u0027t exist.\n`finalize_interpreter()` didn\u0027t catch this because it only used the\npre-finalize interpreter pointer status; if this happens, it results in\nthe internals pointer not being properly destroyed with the interpreter,\nwhich leaks, and also causes a `get_internals()` under a future\ninterpreter to return an internals object that is wrong in various ways.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "29d0950b2b4c8891ce8f1d57446c838a3c2d9c99",
      "old_mode": 33188,
      "old_path": "include/pybind11/embed.h",
      "new_id": "a3f6a4e6714a542ee7271f4363b6a99ef4f86e14",
      "new_mode": 33188,
      "new_path": "include/pybind11/embed.h"
    },
    {
      "type": "modify",
      "old_id": "6501c85d9a5818346348dcc5b2c6d6a963321322",
      "old_mode": 33188,
      "old_path": "tests/test_embed/test_interpreter.cpp",
      "new_id": "58f791a61107d930f6c14b7db30f04bf138b5295",
      "new_mode": 33188,
      "new_path": "tests/test_embed/test_interpreter.cpp"
    }
  ]
}
