)]}'
{
  "commit": "792d35935175dfd747b1ec1043740a3fc726242a",
  "tree": "1af6dd75b6b07a594a37c7422539755c8200b39b",
  "parents": [
    "4a4564510445ba1dd9831cea3acddc2b29f85f03"
  ],
  "author": {
    "name": "Gavin Li",
    "email": "git@thegavinli.com",
    "time": "Thu Oct 30 02:31:43 2025 +0000"
  },
  "committer": {
    "name": "Michael Stapelberg",
    "email": "stapelberg@google.com",
    "time": "Tue Nov 04 01:56:58 2025 -0800"
  },
  "message": "internal/encoding/tag: use proto3 defaults if proto3\n\nproto3 legacy struct field tags are improperly parsed as proto2,\nresulting in fd.L1.EditionFeatures.IsFieldPresence set to true when it\nshould have been false. This causes coderFieldInfo.isPointer to be true\nfor said fields. When the encode process (particularly\nMessageInfo.sizePointerSlow) sees isPointer\u003dtrue for the field, it\nattempts to interpret the field as a pointer, which results in a \"fatal\nerror: checkptr: misaligned pointer conversion\" runtime error if the\nfield address happens to not be pointer-aligned. This only happens if\nbuilding with -race/-asan/-msan as they enable checkptr.\n\nTo avoid this issue, parse from proto3 edition defaults if the proto3\nkey is found in the struct field tag.\n\nChange-Id: Id81ab38fe7efd437d0748a485653d27b1acc3afb\nReviewed-on: https://go-review.googlesource.com/c/protobuf/+/716360\nTryBot-Bypass: Michael Stapelberg \u003cstapelberg@google.com\u003e\nAuto-Submit: Nicolas Hillegeer \u003caktau@google.com\u003e\nReviewed-by: Nicolas Hillegeer \u003caktau@google.com\u003e\nLUCI-TryBot-Result: Go LUCI \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nRun-TryBot: Damien Neil \u003cdneil@google.com\u003e\nReviewed-by: Damien Neil \u003cdneil@google.com\u003e\nReviewed-by: Chressie Himpel \u003cchressie@google.com\u003e\nReviewed-by: Michael Stapelberg \u003cstapelberg@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "669133d04dc9c84a649324a102728b256b110176",
      "old_mode": 33188,
      "old_path": "internal/encoding/tag/tag.go",
      "new_id": "c96e4483460af47cc667d8f92acdbe87cc69ea9a",
      "new_mode": 33188,
      "new_path": "internal/encoding/tag/tag.go"
    },
    {
      "type": "modify",
      "old_id": "e904a7b6bfea7667b046023ce32319e58a3f8cdf",
      "old_mode": 33188,
      "old_path": "internal/encoding/tag/tag_test.go",
      "new_id": "6cd247bac1b80beebd845bdb1f0fdcd26558cb72",
      "new_mode": 33188,
      "new_path": "internal/encoding/tag/tag_test.go"
    }
  ]
}
