when rolling back an efm_op task, also remove children tasks

this simplifies/fixes the case where copying directories and canceling the operation would not correctly propagate the cancel to subtasks (contents of the directory)

T680
devs/sachiel/e19
Mike Blumenkrantz 9 years ago
parent c2c9c3ab72
commit d216853252
  1. 17
      src/bin/e_fm_op.c

@ -975,9 +975,26 @@ static void
_e_fm_op_rollback(E_Fm_Op_Task *task)
{
E_Fm_Op_Copy_Data *data;
E_Fm_Op_Task *t;
Eina_List *l, *ll;
if (!task) return;
EINA_LIST_FOREACH_SAFE(_e_fm_op_scan_queue, l, ll, t)
{
if (t == task) continue;
if (t->parent != task) continue;
_e_fm_op_scan_queue = eina_list_remove_list(_e_fm_op_scan_queue, l);
_e_fm_op_task_free(t);
}
EINA_LIST_FOREACH_SAFE(_e_fm_op_work_queue, l, ll, t)
{
if (t == task) continue;
if (t->parent != task) continue;
_e_fm_op_work_queue = eina_list_remove_list(_e_fm_op_work_queue, l);
_e_fm_op_task_free(t);
}
if (task->type == E_FM_OP_COPY)
{
data = task->data;

Loading…
Cancel
Save