Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.

Commit d572371

Browse files
Path provider windows crash fix (#3814)
Failures to get a known folder that don't throw Windows exceptions need to return null. Fixes flutter/flutter#80712
1 parent ecf54b9 commit d572371

File tree

3 files changed

+12
-3
lines changed

3 files changed

+12
-3
lines changed

packages/path_provider/path_provider_windows/CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 2.0.1
2+
3+
* Fix a crash when a known folder can't be located.
4+
15
## 2.0.0
26

37
* Migrate to null safety

packages/path_provider/path_provider_windows/lib/src/path_provider_windows_real.dart

+7-2
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,11 @@ class PathProviderWindows extends PathProviderPlatform {
8888

8989
@override
9090
Future<String?> getApplicationSupportPath() async {
91-
final String appDataRoot = await getPath(WindowsKnownFolder.RoamingAppData);
91+
final String? appDataRoot =
92+
await getPath(WindowsKnownFolder.RoamingAppData);
93+
if (appDataRoot == null) {
94+
return null;
95+
}
9296
final Directory directory = Directory(
9397
path.join(appDataRoot, _getApplicationSpecificSubdirectory()));
9498
// Ensure that the directory exists if possible, since it will on other
@@ -114,7 +118,7 @@ class PathProviderWindows extends PathProviderPlatform {
114118
///
115119
/// folderID is a GUID that represents a specific known folder ID, drawn from
116120
/// [WindowsKnownFolder].
117-
Future<String> getPath(String folderID) {
121+
Future<String?> getPath(String folderID) {
118122
final Pointer<Pointer<Utf16>> pathPtrPtr = calloc<Pointer<Utf16>>();
119123
final Pointer<GUID> knownFolderID = calloc<GUID>()..ref.setGUID(folderID);
120124

@@ -130,6 +134,7 @@ class PathProviderWindows extends PathProviderPlatform {
130134
if (hr == E_INVALIDARG || hr == E_FAIL) {
131135
throw WindowsException(hr);
132136
}
137+
return Future<String?>.value(null);
133138
}
134139

135140
final String path = pathPtrPtr.value.toDartString();

packages/path_provider/path_provider_windows/pubspec.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: path_provider_windows
22
description: Windows implementation of the path_provider plugin
33
homepage: https://github.com/flutter/plugins/tree/master/packages/path_provider/path_provider_windows
4-
version: 2.0.0
4+
version: 2.0.1
55

66
flutter:
77
plugin:

0 commit comments

Comments
 (0)