From 800034fc7ee675cbc5fad02234cfe5433d5ff30d Mon Sep 17 00:00:00 2001 From: crschnick Date: Sat, 13 Jun 2026 17:55:00 +0000 Subject: [PATCH] Prevent stack overflow in deps calc --- app/src/main/java/io/xpipe/app/storage/DataStorage.java | 6 ++++-- app/src/main/java/io/xpipe/app/storage/DataStoreEntry.java | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/io/xpipe/app/storage/DataStorage.java b/app/src/main/java/io/xpipe/app/storage/DataStorage.java index f6a6b60bc..6551ea82a 100644 --- a/app/src/main/java/io/xpipe/app/storage/DataStorage.java +++ b/app/src/main/java/io/xpipe/app/storage/DataStorage.java @@ -451,7 +451,7 @@ public abstract class DataStorage { entry.finalizeEntry(); } - public Collection> getDependencies(DataStoreEntry entry) { + public Set> getDependencies(DataStoreEntry entry) { var l = new HashSet>(); var store = entry.getStore(); @@ -462,7 +462,9 @@ public abstract class DataStorage { var deps = store.getDependencies(); l.addAll(deps); for (DataStoreEntryRef dep : deps) { - l.addAll(getDependencies(dep.get())); + if (!l.contains(dep)) { + l.addAll(getDependencies(dep.get())); + } } return l; } diff --git a/app/src/main/java/io/xpipe/app/storage/DataStoreEntry.java b/app/src/main/java/io/xpipe/app/storage/DataStoreEntry.java index 8dc322e3c..16b2222a1 100644 --- a/app/src/main/java/io/xpipe/app/storage/DataStoreEntry.java +++ b/app/src/main/java/io/xpipe/app/storage/DataStoreEntry.java @@ -686,8 +686,8 @@ public class DataStoreEntry extends StorageElement { } try { - store.checkComplete(); incrementBusyCounter(); + store.checkComplete(); if ((store instanceof ValidatableStore l)) { l.validate(); }