)]}'
{
  "commit": "8af1322662dbe151221e5fd888d6fa33d6d84626",
  "tree": "df9c05b8fc39175dba67f74f23c2fe8a4528c17d",
  "parents": [
    "ecae1f07ea9b755f69b2d8cf14af51ae0acba323"
  ],
  "author": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Mon Sep 23 22:10:24 2013 -0700"
  },
  "committer": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Tue Sep 24 23:24:42 2013 -0700"
  },
  "message": "Fix Problem::RemoveParameterBlock after calling solve.\n\nThe indexing parameter in the parameter block is expected\nto be the same as its position in the program. However,\nwhen Solve is called, the parameter blocks are made\nmembers of a new program and the same indexing parameter\nis used to store the position of the parameter block\nin this new reordered program.\n\nSo when the user calls RemoveParameterBlock after calling\nSolve, and ProblemImpl checks the invariant on the\nindexing parameter it does not match and causes a crash.\n\nThe fix is to make sure that before returning from Solve,\nthe state of the indexing parameter\u0027s values are restored\nto their original values corresponding to their positions\nin the Program object contained in the ProblemImpl object.\n\nThanks to Simon Lynen for reporting this.\n\nChange-Id: I060745026cd23a688c1fb5e2c9e6053e9ba1c78f\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "830270269c3b1f6fba9aa196eec6fd5750d13a93",
      "old_mode": 33188,
      "old_path": "internal/ceres/problem_impl.cc",
      "new_id": "0846de886499ad61b34b52057f62a47cce0e692d",
      "new_mode": 33188,
      "new_path": "internal/ceres/problem_impl.cc"
    },
    {
      "type": "modify",
      "old_id": "83faa0510c012d47b74f2aaf7f8a8e8cb067525e",
      "old_mode": 33188,
      "old_path": "internal/ceres/solver_impl.cc",
      "new_id": "ae7fc3ffc9b4fbb602fd62cc8ccf092ed5fe3514",
      "new_mode": 33188,
      "new_path": "internal/ceres/solver_impl.cc"
    }
  ]
}
