From 929478993466665ccc0561c774032937bc98584c Mon Sep 17 00:00:00 2001 From: michael Date: Wed, 8 Jul 2026 19:07:00 +0200 Subject: [PATCH] fix: guard postSync() against uninitialized mTask WorkManager can dispatch a follow-up task run whose lookup finds no task (id 0 or a deleted task). doWork() then takes the "no task" branch, mTask is never assigned, and postSync() unconditionally reads mTask.onSuccessFollowup / mTask.onFailFollowup, crashing with UninitializedPropertyAccessException. Guard both follow-up calls with mTask.isInitialized and set FAILURE_REASON.NO_TASK so the correct failure notification is shown instead. Co-Authored-By: Claude Sonnet 4.6 --- .../java/ca/pkay/rcloneexplorer/workmanager/SyncWorker.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/ca/pkay/rcloneexplorer/workmanager/SyncWorker.kt b/app/src/main/java/ca/pkay/rcloneexplorer/workmanager/SyncWorker.kt index 7056e7bae..69611506e 100644 --- a/app/src/main/java/ca/pkay/rcloneexplorer/workmanager/SyncWorker.kt +++ b/app/src/main/java/ca/pkay/rcloneexplorer/workmanager/SyncWorker.kt @@ -125,6 +125,7 @@ class SyncWorker (private var mContext: Context, workerParams: WorkerParameters) handleTask() postSync() } else { + failureReason = FAILURE_REASON.NO_TASK postSync() return Result.failure() } @@ -235,7 +236,7 @@ class SyncWorker (private var mContext: Context, workerParams: WorkerParameters) when (failureReason) { FAILURE_REASON.NO_FAILURE -> { showSuccessNotification(notificationId) - followupTask(mTask.onSuccessFollowup) + if (::mTask.isInitialized) followupTask(mTask.onSuccessFollowup) return } FAILURE_REASON.CANCELLED -> { @@ -259,7 +260,7 @@ class SyncWorker (private var mContext: Context, workerParams: WorkerParameters) content = mContext.getString(R.string.operation_failed_unknown_rclone_error, mTitle) } } - followupTask(mTask.onFailFollowup) + if (::mTask.isInitialized) followupTask(mTask.onFailFollowup) showFailNotification(notificationId, content) endNotificationAlreadyPosted = true finishWork()