From 6d7506ddf9cc6582d5803c99be4e0f3e9f0d576e Mon Sep 17 00:00:00 2001 From: Colin White Date: Sun, 18 Sep 2022 18:55:10 -0700 Subject: [PATCH] Fix parsing paths containing # in FileUriMapper. (#1466) * Fix parsing paths containing # in FileUriMapper. * Rename test. --- .../src/androidTest/java/coil/map/FileUriMapperTest.kt | 7 +++++++ coil-base/src/main/java/coil/map/FileUriMapper.kt | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/coil-base/src/androidTest/java/coil/map/FileUriMapperTest.kt b/coil-base/src/androidTest/java/coil/map/FileUriMapperTest.kt index 2a5440916b..da735363d2 100644 --- a/coil-base/src/androidTest/java/coil/map/FileUriMapperTest.kt +++ b/coil-base/src/androidTest/java/coil/map/FileUriMapperTest.kt @@ -46,4 +46,11 @@ class FileUriMapperTest { val uri = "generic_string".toUri() assertNull(mapper.map(uri, Options(context))) } + + @Test + fun parsesPoundCharacterCorrectly() { + val path = "/sdcard/fi#le.jpg" + assertEquals(File(path), mapper.map(path.toUri(), Options(context))) + assertEquals(File(path), mapper.map("file://$path".toUri(), Options(context))) + } } diff --git a/coil-base/src/main/java/coil/map/FileUriMapper.kt b/coil-base/src/main/java/coil/map/FileUriMapper.kt index f8a32570bc..26da82bc12 100644 --- a/coil-base/src/main/java/coil/map/FileUriMapper.kt +++ b/coil-base/src/main/java/coil/map/FileUriMapper.kt @@ -11,7 +11,8 @@ internal class FileUriMapper : Mapper { override fun map(data: Uri, options: Options): File? { if (!isApplicable(data)) return null - return File(data.path!!) + val uri = if (data.scheme == null) data else data.buildUpon().scheme(null).build() + return File(uri.toString()) } private fun isApplicable(data: Uri): Boolean {