From 6a20e574116af1072782c1e87cb03eb33f05ec50 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Wed, 25 Sep 2013 14:39:14 -0700 Subject: Handle null stacks gracefully. Bug: 10928395 Change-Id: Ie7c3f7e0eb068ece0cf678a5d6346f18a413856b --- .../DocumentsUI/src/com/android/documentsui/DocumentsActivity.java | 4 ++-- .../src/com/android/documentsui/RecentsCreateFragment.java | 3 ++- .../DocumentsUI/src/com/android/documentsui/model/DurableUtils.java | 1 + 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java index 8d55ec4..ca9bea4 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java +++ b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java @@ -295,14 +295,14 @@ public class DocumentsActivity extends Activity { .query(RecentsProvider.buildResume(packageName), null, null, null, null); try { if (cursor.moveToFirst()) { + mExternal = cursor.getInt(cursor.getColumnIndex(ResumeColumns.EXTERNAL)) != 0; final byte[] rawStack = cursor.getBlob( cursor.getColumnIndex(ResumeColumns.STACK)); DurableUtils.readFromArray(rawStack, mState.stack); mRestoredStack = true; - mExternal = cursor.getInt(cursor.getColumnIndex(ResumeColumns.EXTERNAL)) != 0; } } catch (IOException e) { - Log.w(TAG, "Failed to resume", e); + Log.w(TAG, "Failed to resume: " + e); } finally { IoUtils.closeQuietly(cursor); } diff --git a/packages/DocumentsUI/src/com/android/documentsui/RecentsCreateFragment.java b/packages/DocumentsUI/src/com/android/documentsui/RecentsCreateFragment.java index 670d5c0..c975382 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/RecentsCreateFragment.java +++ b/packages/DocumentsUI/src/com/android/documentsui/RecentsCreateFragment.java @@ -48,6 +48,7 @@ import android.widget.TextView; import com.android.documentsui.DocumentsActivity.State; import com.android.documentsui.RecentsProvider.RecentColumns; import com.android.documentsui.model.DocumentStack; +import com.android.documentsui.model.DurableUtils; import com.android.documentsui.model.RootInfo; import com.google.android.collect.Lists; @@ -160,7 +161,7 @@ public class RecentsCreateFragment extends Fragment { cursor.getColumnIndex(RecentColumns.STACK)); try { final DocumentStack stack = new DocumentStack(); - stack.read(new DataInputStream(new ByteArrayInputStream(rawStack))); + DurableUtils.readFromArray(rawStack, stack); // Only update root here to avoid spinning up all // providers; we update the stack during the actual diff --git a/packages/DocumentsUI/src/com/android/documentsui/model/DurableUtils.java b/packages/DocumentsUI/src/com/android/documentsui/model/DurableUtils.java index 214fb14..2a29cbc 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/model/DurableUtils.java +++ b/packages/DocumentsUI/src/com/android/documentsui/model/DurableUtils.java @@ -36,6 +36,7 @@ public class DurableUtils { } public static D readFromArray(byte[] data, D d) throws IOException { + if (data == null) throw new IOException("Missing data"); final ByteArrayInputStream in = new ByteArrayInputStream(data); d.reset(); try { -- cgit v1.1