Fix NPE

Stephen Paul Weber created

Change summary

src/main/java/eu/siacs/conversations/persistance/FileBackend.java        | 5 
src/main/java/eu/siacs/conversations/services/AvatarService.java         | 2 
src/main/java/eu/siacs/conversations/services/XmppConnectionService.java | 5 
3 files changed, 8 insertions(+), 4 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/persistance/FileBackend.java 🔗

@@ -1755,7 +1755,8 @@ public class FileBackend {
                 return null;
             }
         } else {
-            return new BitmapDrawable(cropCenterSquare(image, size));
+            Bitmap bitmap = cropCenterSquare(image, size);
+            return bitmap == null ? null : new BitmapDrawable(bitmap);
         }
     }
 
@@ -2091,7 +2092,7 @@ public class FileBackend {
             }
         } else {
             Bitmap bm = cropCenter(getAvatarUri(avatar), size, size);
-            return new BitmapDrawable(bm);
+            return bm == null ? null : new BitmapDrawable(bm);
         }
     }
 

src/main/java/eu/siacs/conversations/services/AvatarService.java 🔗

@@ -121,7 +121,7 @@ public class AvatarService implements OnAdvancedStreamFeaturesLoaded {
 		if (avatar == null) {
 			avatar = get(contact.getDisplayName(), contact.getJid().asBareJid().toString(), size, false);
 		}
-		this.mXmppConnectionService.getDrawableCache().put(KEY, avatar);
+		if (avatar != null) this.mXmppConnectionService.getDrawableCache().put(KEY, avatar);
 		return avatar;
 	}
 

src/main/java/eu/siacs/conversations/services/XmppConnectionService.java 🔗

@@ -1268,7 +1268,10 @@ public class XmppConnectionService extends Service {
             @Override
             protected int sizeOf(final String key, final Drawable drawable) {
                 if (drawable instanceof BitmapDrawable) {
-                    return ((BitmapDrawable) drawable).getBitmap().getByteCount() / 1024;
+                    Bitmap bitmap =  ((BitmapDrawable) drawable).getBitmap();
+                    if (bitmap == null) return 1024;
+
+                    return bitmap.getByteCount() / 1024;
                 } else {
                     return drawable.getIntrinsicWidth() * drawable.getIntrinsicHeight() * 40 / 1024;
                 }