From 2c4a56af4d56f87a1bbf14386f045bcf57602ef2 Mon Sep 17 00:00:00 2001 From: Johan Alfven Date: Thu, 2 Sep 2010 14:26:54 +0200 Subject: Make sure OutOfMemoryError is handled by WallpaperManager Make sure exception OutOfMemoryError is handled when calling BitmapFactory.decodeFileDescriptor and BitmapFactory.decodeStream to avoid crash in the system server. Change-Id: I954a6388d1225dab86d2617ab0602154b2a7f493 --- core/java/android/app/WallpaperManager.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'core/java') diff --git a/core/java/android/app/WallpaperManager.java b/core/java/android/app/WallpaperManager.java index e455a59..92b7cf5 100644 --- a/core/java/android/app/WallpaperManager.java +++ b/core/java/android/app/WallpaperManager.java @@ -235,8 +235,13 @@ public class WallpaperManager { if (width <= 0 || height <= 0) { // Degenerate case: no size requested, just load // bitmap as-is. - Bitmap bm = BitmapFactory.decodeFileDescriptor( - fd.getFileDescriptor(), null, null); + Bitmap bm = null; + try { + bm = BitmapFactory.decodeFileDescriptor( + fd.getFileDescriptor(), null, null); + } catch (OutOfMemoryError e) { + Log.w(TAG, "Can't decode file", e); + } try { fd.close(); } catch (IOException e) { @@ -277,7 +282,12 @@ public class WallpaperManager { if (width <= 0 || height <= 0) { // Degenerate case: no size requested, just load // bitmap as-is. - Bitmap bm = BitmapFactory.decodeStream(is, null, null); + Bitmap bm = null; + try { + bm = BitmapFactory.decodeStream(is, null, null); + } catch (OutOfMemoryError e) { + Log.w(TAG, "Can't decode stream", e); + } try { is.close(); } catch (IOException e) { -- cgit v1.1