)]}'
{
  "commit": "43d8a28165c0cf5ecfd4ea988f5db0f120672e60",
  "tree": "41e0e1082e575b15d74339f3aacb20fa22807d29",
  "parents": [
    "c32cd79d9ad4aba7d959b5b3be7361b4715e6f18"
  ],
  "author": {
    "name": "Mathias Agopian",
    "email": "mathias@google.com",
    "time": "Tue Apr 27 16:11:38 2010 -0700"
  },
  "committer": {
    "name": "Mathias Agopian",
    "email": "mathias@google.com",
    "time": "Wed Apr 28 16:12:54 2010 -0700"
  },
  "message": "fix a race condition in undoDequeue(), where \u0027tail\u0027 could be computed incorrectly.\n\nin the undoDequeue() case, \u0027tail\u0027 was recalculated from \u0027available\u0027 and \u0027head\u0027\nhowever there was a race between this and retireAndLock(), which could cause\n\u0027tail\u0027 to be recalculated wrongly.\n\nthe interesting thing though is that retireAndLock() shouldn\u0027t have any impact\non the value of \u0027tail\u0027, which is client-side only attribute.\nwe fix the race by saving the value of \u0027tail\u0027 before dequeue() and restore it\nin the case of undoDequeue(), since we know it doesn\u0027t depend on retireAndLock().\n\nChange-Id: I4bcc4d16b6bc4dd93717ee739c603040b18295a0\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6ace5bc98e531f621779dbe096ededbff83c65e2",
      "old_mode": 33188,
      "old_path": "include/private/surfaceflinger/SharedBufferStack.h",
      "new_id": "39ef3a186eeb36a911f54c6bb33d065b3b82f9ce",
      "new_mode": 33188,
      "new_path": "include/private/surfaceflinger/SharedBufferStack.h"
    }
  ]
}
