)]}'
{
  "commit": "534a312d0e8e798643d461947f49e2dfb8df8535",
  "tree": "c3bc3dd73b29302f045ad4d06ad470391878d0df",
  "parents": [
    "0444c602b2435a8393a2f56c6503da640db9b485"
  ],
  "author": {
    "name": "Alex Vakulenko",
    "email": "avakulenko@chromium.org",
    "time": "Fri May 22 15:48:53 2015 -0700"
  },
  "committer": {
    "name": "ChromeOS Commit Bot",
    "email": "chromeos-commit-bot@chromium.org",
    "time": "Sat May 23 04:02:05 2015 +0000"
  },
  "message": "platform2: Enforce virtual destructors on base classes\n\nThere have been a number of memory leak issues due to absence of\nvirtual destructors on base classes. Swept through the following targets:\nbuffet, libchromeos, webserver.\n\nFor every class defined, I did one of the following three things:\n\n1. If the class is not meant to be derived from, marked it as \u0027final\u0027.\n2. If classes derived from a particular base class are not meant to be\n   deleted through the base class, marked the base class\u0027s destructor\n   as \u0027protected\u0027.\n3. Otherwise made the base class\u0027s destructor virtual.\n\nBUG\u003dNone\nTEST\u003d`FEATURES\u003dtest emerge-link libchromeos webserver buffet`\n\nChange-Id: I4d909399896d025c39980c9546b79b145614fc47\nReviewed-on: https://chromium-review.googlesource.com/273000\nTrybot-Ready: Alex Vakulenko \u003cavakulenko@chromium.org\u003e\nTested-by: Alex Vakulenko \u003cavakulenko@chromium.org\u003e\nReviewed-by: Vitaly Buka \u003cvitalybuka@chromium.org\u003e\nCommit-Queue: Vitaly Buka \u003cvitalybuka@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ce08bd11cd676176529abdc5acf444e415fa705c",
      "old_mode": 33188,
      "old_path": "buffet/base_api_handler.cc",
      "new_id": "69ed67c4d24a206d0697055cef5b2370b951fa2a",
      "new_mode": 33188,
      "new_path": "buffet/base_api_handler.cc"
    },
    {
      "type": "modify",
      "old_id": "ef4bf031af513a4d0e785dec94ad9aa5b3098c37",
      "old_mode": 33188,
      "old_path": "buffet/buffet_client.cc",
      "new_id": "8408a46236c581f2104e5450743d0ab671d5dcd4",
      "new_mode": 33188,
      "new_path": "buffet/buffet_client.cc"
    },
    {
      "type": "modify",
      "old_id": "3328a940ff25ee4f9a5cfcaa6c621456f2271e3a",
      "old_mode": 33188,
      "old_path": "buffet/commands/command_definition.h",
      "new_id": "a5e2916ddbf825c45fae6901bc43439a1e1b16f2",
      "new_mode": 33188,
      "new_path": "buffet/commands/command_definition.h"
    },
    {
      "type": "modify",
      "old_id": "7668fbae409334e8bcbc01ee14c9d1893333313e",
      "old_mode": 33188,
      "old_path": "buffet/commands/command_dictionary.h",
      "new_id": "97ab596d968a5c609b2695403d6ea0e9a49f8298",
      "new_mode": 33188,
      "new_path": "buffet/commands/command_dictionary.h"
    },
    {
      "type": "modify",
      "old_id": "9178c8a17c72bf852056afb7585dbd181748e456",
      "old_mode": 33188,
      "old_path": "buffet/commands/command_queue.h",
      "new_id": "db6707cdac29b5839330131ec296fcab7dc5f838",
      "new_mode": 33188,
      "new_path": "buffet/commands/command_queue.h"
    },
    {
      "type": "modify",
      "old_id": "ab63a6c9153b57279326febc1e6f5eed3504992e",
      "old_mode": 33188,
      "old_path": "buffet/commands/dbus_command_dispatcher.h",
      "new_id": "e9f5003c1da3502be4e14a91d239cebd34dbb656",
      "new_mode": 33188,
      "new_path": "buffet/commands/dbus_command_dispatcher.h"
    },
    {
      "type": "modify",
      "old_id": "625b8542918de8335d45bef8a894cf54dcfbcea6",
      "old_mode": 33188,
      "old_path": "buffet/commands/schema_utils.h",
      "new_id": "59e3b39f78113e2f6b74996331ba75e54cbb81a8",
      "new_mode": 33188,
      "new_path": "buffet/commands/schema_utils.h"
    },
    {
      "type": "modify",
      "old_id": "7732da4dbd26377c4f7abf6a789dcb44d1ab3b3c",
      "old_mode": 33188,
      "old_path": "buffet/device_registration_info.h",
      "new_id": "1314d5f082244de1033cd6583255e5490d0e662c",
      "new_mode": 33188,
      "new_path": "buffet/device_registration_info.h"
    },
    {
      "type": "modify",
      "old_id": "a4ecf5963516576d5d6136005959de425844248f",
      "old_mode": 33188,
      "old_path": "buffet/main.cc",
      "new_id": "c7d44d098edc1cb2ece8b34bb728aabf6ac5d4e6",
      "new_mode": 33188,
      "new_path": "buffet/main.cc"
    },
    {
      "type": "modify",
      "old_id": "8db127e1b9bfa233bb7e226eaa3d26115e4b828a",
      "old_mode": 33188,
      "old_path": "buffet/notification/xmpp_channel.h",
      "new_id": "4afb5df2fdc51fe86a45daa94d585004dfa8e113",
      "new_mode": 33188,
      "new_path": "buffet/notification/xmpp_channel.h"
    },
    {
      "type": "modify",
      "old_id": "6bb39c7db775c3788a06646fb89e7996ba15114a",
      "old_mode": 33188,
      "old_path": "buffet/notification/xmpp_stream_parser.h",
      "new_id": "9ff9200efcdffacde124f63efc8fbaec0c845416",
      "new_mode": 33188,
      "new_path": "buffet/notification/xmpp_stream_parser.h"
    },
    {
      "type": "modify",
      "old_id": "7f205da4207baf32b52f49834a9de58850e876dc",
      "old_mode": 33188,
      "old_path": "buffet/storage_impls.h",
      "new_id": "6bdf251ecf3412f81be79528c4ec66b293f657dd",
      "new_mode": 33188,
      "new_path": "buffet/storage_impls.h"
    },
    {
      "type": "modify",
      "old_id": "0da72c224b8552645c308e978a969c32139a9bee",
      "old_mode": 33188,
      "old_path": "buffet/test_daemon/main.cc",
      "new_id": "64c0c00648d204b9c1a8214d14283a08318116c9",
      "new_mode": 33188,
      "new_path": "buffet/test_daemon/main.cc"
    }
  ]
}
