From caec0c3eaaef1eafac917b47a14090ff9e475e75 Mon Sep 17 00:00:00 2001
From: Hans-Christoph Steiner <hans@eds.org>
Date: Wed, 1 Jun 2016 22:44:03 +0200
Subject: [PATCH] fix crash if an APK has a short embedded description

caught java.lang.StringIndexOutOfBoundsException:
  at java.lang.String.substring(String.java:1651)
  at java.lang.String.subSequence(String.java:2040)
  at org.fdroid.fdroid.data.App.setFromPackageInfo(App.java:298)
  at org.fdroid.fdroid.data.App.<init>(App.java:268)
  at org.fdroid.fdroid.localrepo.CacheSwapAppsService.onHandleIntent(CacheSwapAppsService.java:78)
  at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:59)
  at android.os.Handler.dispatchMessage(Handler.java:99)
  at android.os.Looper.loop(Looper.java:130)
  at android.os.HandlerThread.run(HandlerThread.java:60)
---
 app/src/main/java/org/fdroid/fdroid/data/App.java | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/app/src/main/java/org/fdroid/fdroid/data/App.java b/app/src/main/java/org/fdroid/fdroid/data/App.java
index 94e1af011..8d8fd8b22 100644
--- a/app/src/main/java/org/fdroid/fdroid/data/App.java
+++ b/app/src/main/java/org/fdroid/fdroid/data/App.java
@@ -272,8 +272,10 @@ public class App extends ValueObject implements Comparable<App> {
         final CharSequence appDescription = appInfo.loadDescription(pm);
         if (TextUtils.isEmpty(appDescription)) {
             this.summary = "(installed by " + installerPackageLabel + ")";
-        } else {
+        } else if (appDescription.length() > 40) {
             this.summary = (String) appDescription.subSequence(0, 40);
+        } else {
+            this.summary = (String) appDescription;
         }
         this.packageName = appInfo.packageName;
         this.added = new Date(packageInfo.firstInstallTime);