From c2ce0e68c6e8429c376dcd7dabf9feb0b4ccc6e2 Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Tue, 5 Jan 2021 18:49:02 -0800 Subject: [PATCH] [flutter_tools] prevent NPE due to moved/deleted packages during upgrade packages (#73357) --- .../lib/src/commands/update_packages.dart | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/flutter_tools/lib/src/commands/update_packages.dart b/packages/flutter_tools/lib/src/commands/update_packages.dart index 95ef04b2921..9bc47bb31c2 100644 --- a/packages/flutter_tools/lib/src/commands/update_packages.dart +++ b/packages/flutter_tools/lib/src/commands/update_packages.dart @@ -1425,12 +1425,13 @@ Directory createTemporaryFlutterSdk( Directory realFlutter, List pubspecs, ) { - final Set currentPackages = realFlutter - .childDirectory('packages') - .listSync() - .whereType() - .map((Directory directory) => fileSystem.path.basename(directory.path)) - .toSet(); + final Set currentPackages = {}; + for (final FileSystemEntity entity in realFlutter.childDirectory('packages').listSync()) { + // Verify that a pubspec.yaml exists to ensure this isn't a left over directory. + if (entity is Directory && entity.childFile('pubspec.yaml').existsSync()) { + currentPackages.add(fileSystem.path.basename(entity.path)); + } + } final Map pubspecsByName = {}; for (final PubspecYaml pubspec in pubspecs) {