)]}'
{
  "commit": "6bc21aceb51f115e8cefb3d50a8d21e6e541b818",
  "tree": "b0208f8c632bc98899c4a680d7b49e060f32998f",
  "parents": [
    "2b70962e273d0044893f85497f6a0b31f1c1d3d6"
  ],
  "author": {
    "name": "Jeff Bailey",
    "email": "jbailey@raspberryginger.com",
    "time": "Wed May 06 22:40:58 2026 +0100"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Wed May 06 14:45:23 2026 -0700"
  },
  "message": "[libc][stdlib] Use structure bindings instead of output params (#196169)\n\nRefactored alloc_and_copy to return cpp::optional\u003cAllocResult\u003e instead\nof using reference-to-pointer output parameters. The combination of char\n**\u0026 parameters with array new/delete is known to trigger a segfault in\nGCC 12\u0027s waccess GIMPLE pass.\n\nThe AllocResult struct holds the two allocated arrays (storage and\nownership). Call sites use structured bindings to unpack the result\nafter checking for nullopt.\n\nHopefully fixes the build failure in PR #195260 on the\nlibc-x86_64-debian-gcc-fullbuild-dbg builder.\n\nAssisted-by: Automated tooling, human reviewed.\nGitOrigin-RevId: 3637547de158fe7f244fd3e330d288fd66776a1c\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0dd39293d652ef9167d0b1b79da0fca1fb0b5e56",
      "old_mode": 33188,
      "old_path": "src/stdlib/environ_internal.cpp",
      "new_id": "a6b630921f9f158b464a92a68d5b07f4d3177942",
      "new_mode": 33188,
      "new_path": "src/stdlib/environ_internal.cpp"
    },
    {
      "type": "modify",
      "old_id": "1ce214dd0f43970064e868c23e08ec1ee2c7f2b8",
      "old_mode": 33188,
      "old_path": "src/stdlib/environ_internal.h",
      "new_id": "0ab75e200b968f94f3a153489305c5ed20b1adc9",
      "new_mode": 33188,
      "new_path": "src/stdlib/environ_internal.h"
    }
  ]
}
