diff --git a/src/org/fdroid/fdroid/DB.java b/src/org/fdroid/fdroid/DB.java index 2b337a130..3f87b310a 100644 --- a/src/org/fdroid/fdroid/DB.java +++ b/src/org/fdroid/fdroid/DB.java @@ -191,26 +191,36 @@ public class DB { // most recent, if for example there are betas etc. public Apk getCurrentVersion() { - // Try and return the real current version first... + // Try and return the real current version first. It will find the + // closest version smaller than the curVercode, being the same + // vercode if it exists. if (curVercode > 0) { + int latestcode = -1; + Apk latestapk = null; for (Apk apk : apks) { - if (apk.compatible && apk.vercode == curVercode) - return apk; + if (apk.compatible && apk.vercode <= curVercode + && apk.vercode > latestcode) { + latestapk = apk; + latestcode = apk.vercode; + } } + return latestapk; } - // If we don't know the current version, or we don't have it, we - // return the most recent version we have... - int latestcode = -1; - Apk latestapk = null; - for (Apk apk : apks) { - if (apk.compatible &&apk.vercode < curVercode - && apk.vercode > latestcode) { - latestapk = apk; - latestcode = apk.vercode; + // If the current version was not set we return the most recent apk. + if (curVercode == -1) { + int latestcode = -1; + Apk latestapk = null; + for (Apk apk : apks) { + if (apk.compatible && apk.vercode > latestcode) { + latestapk = apk; + latestcode = apk.vercode; + } } + return latestapk; } - return latestapk; + + return null; } @Override diff --git a/src/org/fdroid/fdroid/RepoXMLHandler.java b/src/org/fdroid/fdroid/RepoXMLHandler.java index b7b635053..173d88c0c 100644 --- a/src/org/fdroid/fdroid/RepoXMLHandler.java +++ b/src/org/fdroid/fdroid/RepoXMLHandler.java @@ -137,7 +137,7 @@ public class RepoXMLHandler extends DefaultHandler { try { curapk.vercode = Integer.parseInt(str); } catch (NumberFormatException ex) { - curapk.vercode = 0; + curapk.vercode = -1; } } else if (curel.equals("size")) { try { @@ -228,7 +228,7 @@ public class RepoXMLHandler extends DefaultHandler { try { curapp.curVercode = Integer.parseInt(str); } catch (NumberFormatException ex) { - curapp.curVercode = 0; + curapp.curVercode = -1; } } else if (curel.equals("antifeatures")) { curapp.antiFeatures = DB.CommaSeparatedList.make(str);