From 5918aa898548ee005cf650a994c32f0e18353450 Mon Sep 17 00:00:00 2001 From: Jonas Finnemann Jensen Date: Mon, 2 Nov 2020 19:55:09 +0000 Subject: [PATCH] Fix #44027 Remove if-else branches introduced in [1], fixing crash bug when `$HOME/.dart/` does not exists. [1]: https://dart-review.googlesource.com/c/sdk/+/168947 Fixed: 44027 Change-Id: Ic178ebf8eb04ac34c1574269b5d7191a5e514460 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/170088 Auto-Submit: Jonas Jensen Reviewed-by: Janice Collins Commit-Queue: Janice Collins --- pkg/dartdev/lib/src/analytics.dart | 53 +++++++++++++++++------------- 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/pkg/dartdev/lib/src/analytics.dart b/pkg/dartdev/lib/src/analytics.dart index c42129d485f..9f3095fb8c1 100644 --- a/pkg/dartdev/lib/src/analytics.dart +++ b/pkg/dartdev/lib/src/analytics.dart @@ -54,39 +54,46 @@ Analytics createAnalyticsInstance(bool disableAnalytics) { if (Platform.environment['_DARTDEV_LOG_ANALYTICS'] != null) { // Used for testing what analytics messages are sent. _instance = _LoggingAnalytics(); - } else if (disableAnalytics) { + return _instance; + } + + if (disableAnalytics) { // Dartdev tests pass a hidden 'disable-dartdev-analytics' flag which is // handled here. // Also, stdout.hasTerminal is checked, if there is no terminal we infer that // a machine is running dartdev so we return analytics shouldn't be set. _instance = DisabledAnalytics(_trackingId, _appName); - } else { - var settingsDir = getDartStorageDirectory(); - if (settingsDir == null) { - // Some systems don't support user home directories; for those, fail + return _instance; + } + + var settingsDir = getDartStorageDirectory(); + if (settingsDir == null) { + // Some systems don't support user home directories; for those, fail + // gracefully by returning a disabled analytics object. + _instance = DisabledAnalytics(_trackingId, _appName); + return _instance; + } + + if (!settingsDir.existsSync()) { + try { + settingsDir.createSync(); + } catch (e) { + // If we can't create the directory for the analytics settings, fail // gracefully by returning a disabled analytics object. _instance = DisabledAnalytics(_trackingId, _appName); - } else if (!settingsDir.existsSync()) { - try { - settingsDir.createSync(); - } catch (e) { - // If we can't create the directory for the analytics settings, fail - // gracefully by returning a disabled analytics object. - _instance = DisabledAnalytics(_trackingId, _appName); - } - } else { - var readmeFile = - File('${settingsDir.absolute.path}${path.separator}$_readmeFileName'); - if (!readmeFile.existsSync()) { - readmeFile.createSync(); - readmeFile.writeAsStringSync(_readmeFileContents); - } - - var settingsFile = File(path.join(settingsDir.path, _settingsFileName)); - _instance = DartdevAnalytics(_trackingId, settingsFile, _appName); + return _instance; } } + var readmeFile = + File('${settingsDir.absolute.path}${path.separator}$_readmeFileName'); + if (!readmeFile.existsSync()) { + readmeFile.createSync(); + readmeFile.writeAsStringSync(_readmeFileContents); + } + + var settingsFile = File(path.join(settingsDir.path, _settingsFileName)); + _instance = DartdevAnalytics(_trackingId, settingsFile, _appName); return _instance; }