From 0693fd85f69db553204168eeb342e6bf0b5fe7b5 Mon Sep 17 00:00:00 2001 From: Andreas Gampe Date: Thu, 28 Apr 2016 19:33:05 -0700 Subject: [PATCH] Frameworks/base: Use holder in FileUtils Use a holder for an uncommon Pattern instance in FileUtils. Allows to compile-time initialize: * android.os.FileUtils Bug: 28174137 Change-Id: I4a7a388795a96678b4b26e4f2c02b1117d6a67f6 --- core/java/android/os/FileUtils.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/core/java/android/os/FileUtils.java b/core/java/android/os/FileUtils.java index 7d74a1234c26d..fa32848e63626 100644 --- a/core/java/android/os/FileUtils.java +++ b/core/java/android/os/FileUtils.java @@ -72,8 +72,13 @@ public class FileUtils { public static final int S_IWOTH = 00002; public static final int S_IXOTH = 00001; - /** Regular expression for safe filenames: no spaces or metacharacters */ - private static final Pattern SAFE_FILENAME_PATTERN = Pattern.compile("[\\w%+,./=_-]+"); + /** Regular expression for safe filenames: no spaces or metacharacters. + * + * Use a preload holder so that FileUtils can be compile-time initialized. + */ + private static class NoImagePreloadHolder { + public static final Pattern SAFE_FILENAME_PATTERN = Pattern.compile("[\\w%+,./=_-]+"); + } private static final File[] EMPTY = new File[0]; @@ -243,7 +248,7 @@ public class FileUtils { // Note, we check whether it matches what's known to be safe, // rather than what's known to be unsafe. Non-ASCII, control // characters, etc. are all unsafe by default. - return SAFE_FILENAME_PATTERN.matcher(file.getPath()).matches(); + return NoImagePreloadHolder.SAFE_FILENAME_PATTERN.matcher(file.getPath()).matches(); } /**