diff options
author | Vasu Nori <vnori@google.com> | 2011-01-11 12:00:44 -0800 |
---|---|---|
committer | Vasu Nori <vnori@google.com> | 2011-01-11 12:57:26 -0800 |
commit | 597bbd96431ca1fb655a21285cfd5411a67bad16 (patch) | |
tree | f926a41e77948938b8ab20d89b7a8908e1df18dd /src/com/android/providers | |
parent | ead1b057d86021f4f0a44bad8616ddae2aa39a40 (diff) | |
download | android_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/com/android/providers')
-rw-r--r-- | src/com/android/providers/downloads/DownloadThread.java | 10 | ||||
-rw-r--r-- | src/com/android/providers/downloads/StorageManager.java | 7 |
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: |