)]}'
{
  "commit": "fa2f8f44d6fca97976dd89e96ec7588f55853c93",
  "tree": "bb103cd1cf54b85f833a11a6cdad19b3650344fb",
  "parents": [
    "2bb7a337e39b273e37669cec7450a03a3533f256"
  ],
  "author": {
    "name": "Heschi Kreinick",
    "email": "heschi@google.com",
    "time": "Wed Mar 21 18:06:22 2018 -0400"
  },
  "committer": {
    "name": "Heschi Kreinick",
    "email": "heschi@google.com",
    "time": "Thu Mar 22 19:54:41 2018 +0000"
  },
  "message": "gocore: fix direct interface handling\n\nAn interface that contains a pointer-shaped type doesn\u0027t need to\nintroduce a new level of indirection, and is therefore called a \"direct\"\ninterface. The implementation of typeObject for direct interfaces was a\nlittle over-eager, and tried to dereference that pointer before adding\nit to the work queue.\n\nThat caused two problems. First, dereferencing a KindFunc is\nmeaningless: Funcs are pointers to closures, *not* the closures\nthemselves. Second, if it had failed to find the type of the interface\ncontents, notably because it had recursed through a struct type with no\nDWARF, it would dereference unsafe.Pointer, end up with no type, and\ncrash.\n\nThe easiest fix is simply to not dereference the pointer. So do that,\nand support KindFunc now that it\u0027ll work.\n\nChange-Id: Ica03bd7155bea94d95a15807a977520958954b1c\nReviewed-on: https://go-review.googlesource.com/102195\nReviewed-by: Keith Randall \u003ckhr@golang.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "08b5cd11ef06cbfc65b6822c621972a07a3bf890",
      "old_mode": 33188,
      "old_path": "gocore/type.go",
      "new_id": "49e6c648ca1736d1f53d19a363b7b77246d7394f",
      "new_mode": 33188,
      "new_path": "gocore/type.go"
    }
  ]
}
