From 7ab16ade9fa3ba3eb30423e03be1a37cec53d60a Mon Sep 17 00:00:00 2001 From: LoveSy Date: Mon, 6 Sep 2021 16:52:29 +0800 Subject: [PATCH] [core] Fix updateWithOnConflict always returns >0 (#1067) --- .../main/java/org/lsposed/lspd/service/ConfigManager.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/lsposed/lspd/service/ConfigManager.java b/core/src/main/java/org/lsposed/lspd/service/ConfigManager.java index 5d0d1304..b1907abd 100644 --- a/core/src/main/java/org/lsposed/lspd/service/ConfigManager.java +++ b/core/src/main/java/org/lsposed/lspd/service/ConfigManager.java @@ -601,7 +601,11 @@ public class ConfigManager { // insert or update in two step since insert or replace will change the autoincrement mid int count = (int) db.insertWithOnConflict("modules", null, values, SQLiteDatabase.CONFLICT_IGNORE); if (count < 0) { - count = db.updateWithOnConflict("modules", values, "module_pkg_name=?", new String[]{packageName}, SQLiteDatabase.CONFLICT_IGNORE); + var cached = cachedModule.getOrDefault(packageName, null); + if (cached == null || cached.apkPath == null || !cached.apkPath.equals(apkPath)) + count = db.updateWithOnConflict("modules", values, "module_pkg_name=?", new String[]{packageName}, SQLiteDatabase.CONFLICT_IGNORE); + else + count = 0; } if (count > 0) { // Called by oneway binder