summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVasu Nori <vnori@google.com>2011-01-11 12:00:44 -0800
committerVasu Nori <vnori@google.com>2011-01-11 12:57:26 -0800
commit597bbd96431ca1fb655a21285cfd5411a67bad16 (patch)
treef926a41e77948938b8ab20d89b7a8908e1df18dd /src
parentead1b057d86021f4f0a44bad8616ddae2aa39a40 (diff)
downloadandroid_packages_providers_DownloadProvider-597bbd96431ca1fb655a21285cfd5411a67bad16.tar.gz
android_packages_providers_DownloadProvider-597bbd96431ca1fb655a21285cfd5411a67bad16.tar.bz2
android_packages_providers_DownloadProvider-597bbd96431ca1fb655a21285cfd5411a67bad16.zip
bug:3338089 NPE in downloadthread
Change-Id: I95b4c52598092e9f6ffa1713b36ac11d44e26279
Diffstat (limited to 'src')
-rw-r--r--src/com/android/providers/downloads/DownloadThread.java10
-rw-r--r--src/com/android/providers/downloads/StorageManager.java7
2 files changed, 15 insertions, 2 deletions
diff --git a/src/com/android/providers/downloads/DownloadThread.java b/src/com/android/providers/downloads/DownloadThread.java
index 8b8d8bd1..61fb209f 100644
--- a/src/com/android/providers/downloads/DownloadThread.java
+++ b/src/com/android/providers/downloads/DownloadThread.java
@@ -416,7 +416,8 @@ public class DownloadThread extends Thread {
if (state.mStream == null) {
state.mStream = new FileOutputStream(state.mFilename, true);
}
- mStorageManager.verifySpaceBeforeWritingToFile(mInfo.mDestination, null, bytesRead);
+ mStorageManager.verifySpaceBeforeWritingToFile(mInfo.mDestination, state.mFilename,
+ bytesRead);
state.mStream.write(data, 0, bytesRead);
if (mInfo.mDestination == Downloads.Impl.DESTINATION_EXTERNAL
&& !isDrmFile(state)) {
@@ -424,7 +425,12 @@ public class DownloadThread extends Thread {
}
return;
} catch (IOException ex) {
- mStorageManager.verifySpace(mInfo.mDestination, null, bytesRead);
+ // couldn't write to file. are we out of space? check.
+ // TODO this check should only be done once. why is this being done
+ // in a while(true) loop (see the enclosing statement: for(;;)
+ if (state.mStream != null) {
+ mStorageManager.verifySpace(mInfo.mDestination, state.mFilename, bytesRead);
+ }
}
}
}
diff --git a/src/com/android/providers/downloads/StorageManager.java b/src/com/android/providers/downloads/StorageManager.java
index d7d0a7ad..e9638b8f 100644
--- a/src/com/android/providers/downloads/StorageManager.java
+++ b/src/com/android/providers/downloads/StorageManager.java
@@ -138,6 +138,13 @@ class StorageManager {
void verifySpace(int destination, String path, long length) throws StopRequestException {
resetBytesDownloadedSinceLastCheckOnSpace();
File dir = null;
+ if (Constants.LOGV) {
+ Log.i(Constants.TAG, "in verifySpace, destination: " + destination +
+ ", path: " + path + ", length: " + length);
+ }
+ if (path == null) {
+ throw new IllegalArgumentException("path can't be null");
+ }
switch (destination) {
case Downloads.Impl.DESTINATION_CACHE_PARTITION:
case Downloads.Impl.DESTINATION_CACHE_PARTITION_NOROAMING: