)]}'
{
  "commit": "be4b9548c614e554a234872198536e2ec0b76f46",
  "tree": "59f6626912a48f8d4c4cbdea8479097da7da2466",
  "parents": [
    "9977864c61894bc8c21fe21a6bff99b5a3902461"
  ],
  "author": {
    "name": "DigvijaySingh",
    "email": "digvijaysinghiam@gmail.com",
    "time": "Wed Jul 08 23:19:20 2026 +0530"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Jul 08 17:49:20 2026 +0000"
  },
  "message": "[flutter_tools] Don\u0027t crash on non-UTF-8 plugin pubspec.yaml (#188976)\n\nFixes https://github.com/flutter/flutter/issues/188970\n\n`_pluginFromPackage` caught only `YamlException` around the plugin\u0027s\n`pubspec.yaml` read, so a pubspec containing non-UTF-8 bytes threw an\nuncaught `FileSystemException` and crashed the tool. This mirrors the\nsibling pubspec-cache reader (added in #184528), catching\n`FileSystemException` and skipping the unreadable package.\n\n## Tests\nAdded a regression test in `plugins_test.dart` that corrupts a plugin\u0027s\n`pubspec.yaml` with invalid UTF-8 and asserts the tool skips it instead\nof crashing. Verified it fails without the fix\n(`FileSystemException: Invalid UTF-8 byte`) and passes with it.\n\n## Design note\n`dart:io` surfaces UTF-8 decode failures as a generic\n`FileSystemException` with no narrower subtype, so this catches\n`FileSystemException`, consistent with the sibling `buildPubspecCache`.\nGenuine I/O errors on an existing pubspec are therefore also skipped\nrather than crashing, which matches existing behavior and is preferable\nto failing every command over one unreadable transitive dependency.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ca9dc329867aca952be22a258ab06ca09e4453bc",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/lib/src/flutter_plugins.dart",
      "new_id": "1d52046878f6ee331ef83328adfcad68b170daaa",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/lib/src/flutter_plugins.dart"
    },
    {
      "type": "modify",
      "old_id": "4ac9a790299a9b51bee8deb74d5ccdd32899a3e6",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/test/general.shard/plugins_test.dart",
      "new_id": "1d2e0632488dd288c03e2eb6dbeb7a453e6e33ce",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/test/general.shard/plugins_test.dart"
    }
  ]
}
