Skip to content

Commit 90ecc98

Browse files
committed
ensure we unmap parts before deleting backing image
1 parent d4878c7 commit 90ecc98

File tree

1 file changed

+19
-11
lines changed
  • app/src/main/java/org/andbootmgr/app

1 file changed

+19
-11
lines changed

app/src/main/java/org/andbootmgr/app/Start.kt

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -468,19 +468,27 @@ private fun OsEditor(vm: MainActivityState, parts: SDUtils.SDPartitionMeta?, e:
468468
delete = false
469469
CoroutineScope(Dispatchers.Default).launch {
470470
var tresult = ""
471-
if (e.has("xpart") && !e["xpart"].isNullOrBlank() && vm.deviceInfo!!.metaonsd) {
472-
var parts = parts
471+
if (e.has("xpart") && !e["xpart"].isNullOrBlank()) {
473472
val allp = e["xpart"]!!.split(":")
474-
.map { parts!!.dumpKernelPartition(Integer.valueOf(it)) }
475-
vm.unmountBootset()
476-
for (p in allp) { // Do not chain, but regenerate meta and unmount every time. Thanks vold
477-
p.meta = if (parts != null) parts.also { parts = null }
478-
else SDUtils.generateMeta(vm.deviceInfo!!.asMetaOnSdDeviceInfo())!!
479-
val r = vm.logic!!.delete(p).exec()
480-
tresult += r.out.joinToString("\n") + r.err.joinToString("\n") + "\n"
473+
if (vm.deviceInfo!!.metaonsd) {
474+
val allParts = allp.map { parts!!.dumpKernelPartition(Integer.valueOf(it)) }
475+
vm.unmountBootset()
476+
var parts = parts
477+
for (p in allParts) { // Do not chain, but regenerate meta and unmount every time. Thanks vold
478+
p.meta = if (parts != null) parts.also { parts = null }
479+
else SDUtils.generateMeta(vm.deviceInfo!!.asMetaOnSdDeviceInfo())!!
480+
val r = vm.logic!!.delete(p).exec()
481+
tresult += r.out.joinToString("\n") + r.err.joinToString("\n") + "\n"
482+
}
483+
vm.mountBootset()
484+
} else {
485+
for (p in allp) {
486+
if (!vm.logic!!.unmap(f.nameWithoutExtension, p.toInt()))
487+
tresult += vm.activity!!.getString(R.string.cannot_delete, vm.logic!!.getDmFile(f.nameWithoutExtension, p.toInt()))
488+
}
481489
}
482-
vm.mountBootset()
483-
} else if (!vm.deviceInfo!!.metaonsd) {
490+
}
491+
if (!vm.deviceInfo!!.metaonsd) {
484492
val f3 = SuFile(vm.logic!!.abmSdLessBootset, f.nameWithoutExtension)
485493
if (!f3.deleteRecursive())
486494
tresult += vm.activity!!.getString(R.string.cannot_delete, f3.absolutePath)

0 commit comments

Comments
 (0)