)]}'
{
  "commit": "9eaa55756c5b245970447019250ce852f5189525",
  "tree": "68428af4a3b22a62f9c09a2c4c7b8a8a95a936fd",
  "parents": [
    "2e77ad2a9f7afb57b6f9127dd7c229e774baa9c8"
  ],
  "author": {
    "name": "Glenn Kasten",
    "email": "gkasten@google.com",
    "time": "Fri Jan 20 13:32:16 2012 -0800"
  },
  "committer": {
    "name": "Glenn Kasten",
    "email": "gkasten@google.com",
    "time": "Wed Feb 22 13:19:26 2012 -0800"
  },
  "message": "Avoid wp\u003c\u003e::unsafe_get() with a few exceptions\n\nAvoid using wp\u003c\u003e::unsafe_get() except in a log, and other specific cases\nwhen it\u0027s known to be safe.\n\nUse more specific subclass types for parameters to avoid down-casts.\n\nWhen a constructor or method parameter is \"this\" of an object that is\ncurrently being constructed, it\u0027s better to use a raw pointer rather\nthan either sp\u003c\u003e or wp\u003c\u003e.\n\nUsing the raw pointer is safe, provided either:\n - it is \"this\" of an object being constructed (which has sp\u003c\u003e refcount of 0),\n - or the caller already holds an sp\u003c\u003e\n\nThe raw pointer is simpler and faster, and it avoids the problem of the\nsp\u003c\u003e reference count being incremented and then decremented to zero on\nscope exit, which would cause the object\u0027s destructor to run while the\nobject is still being constructed.\n\nAlso removed some dead code per a review comment.\n\nChange-Id: I7375f64da3aec11b928c33cb01faff186252ef5e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2e2834c3c7f60017455b81541a03362a2df4249a",
      "old_mode": 33188,
      "old_path": "services/audioflinger/AudioFlinger.cpp",
      "new_id": "5af163a8f6d5a89805c760f812d9f1cd153223ca",
      "new_mode": 33188,
      "new_path": "services/audioflinger/AudioFlinger.cpp"
    },
    {
      "type": "modify",
      "old_id": "50712cf1fa8aa625274de2664fde8476a224c2ce",
      "old_mode": 33188,
      "old_path": "services/audioflinger/AudioFlinger.h",
      "new_id": "1a52de5b67d7550e316929f5312221ef24a1e789",
      "new_mode": 33188,
      "new_path": "services/audioflinger/AudioFlinger.h"
    }
  ]
}
