From 01e0913ad20b24cc2b7b4dc2f4cbac03ccd4bc0e Mon Sep 17 00:00:00 2001
From: Jean Chalard <jchalard@google.com>
Date: Fri, 12 Oct 2012 18:07:30 +0900
Subject: [PATCH] Make a better choice for the temporary file

Change-Id: I745bb285b6b52875c8d2b3a94deb962352f9754e
---
 .../inputmethod/latin/BinaryDictionaryFileDumper.java    | 8 +++++++-
 .../inputmethod/latin/BinaryDictionaryGetter.java        | 9 ++-------
 2 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java b/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
index b0b65edb62..bed31a7d1e 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java
@@ -149,7 +149,13 @@ public final class BinaryDictionaryFileDumper {
 
         final Uri.Builder wordListUriBuilder = getProviderUriBuilder(id);
         final String finalFileName = BinaryDictionaryGetter.getCacheFileName(id, locale, context);
-        final String tempFileName = BinaryDictionaryGetter.getTempFileName(id, context);
+        String tempFileName;
+        try {
+            tempFileName = BinaryDictionaryGetter.getTempFileName(id, context);
+        } catch (IOException e) {
+            Log.e(TAG, "Can't open the temporary file", e);
+            return null;
+        }
 
         for (int mode = MODE_MIN; mode <= MODE_MAX; ++mode) {
             InputStream originalSourceStream = null;
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java b/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java
index c747dc6734..ecb61b46f1 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java
@@ -165,14 +165,9 @@ final class BinaryDictionaryGetter {
 
     /**
      * Generates a unique temporary file name in the app cache directory.
-     *
-     * This is unique as long as it doesn't get called twice in the same millisecond by the same
-     * thread, which should be more than enough for our purposes.
      */
-    public static String getTempFileName(String id, Context context) {
-        final String fileName = replaceFileNameDangerousCharacters(id);
-        return context.getCacheDir() + File.separator + fileName + "."
-                + Thread.currentThread().getId() + "." + System.currentTimeMillis();
+    public static String getTempFileName(String id, Context context) throws IOException {
+        return File.createTempFile(replaceFileNameDangerousCharacters(id), null).getAbsolutePath();
     }
 
     /**
-- 
GitLab