From 05ba58c56f9948bbfe1f13896bb73bd1a5e91eb2 Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Tue, 9 Sep 2014 23:37:29 -0400 Subject: [PATCH] TDB2 - Disabled hook processing while processing hooks. This is because both ::add and ::modify can each add or modify tasks, and there is the potential for infinite recursion. --- src/TDB2.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/TDB2.cpp b/src/TDB2.cpp index f42a90c8d..c957e7b72 100644 --- a/src/TDB2.cpp +++ b/src/TDB2.cpp @@ -137,7 +137,10 @@ bool TF2::get (const std::string& uuid, Task& task) //////////////////////////////////////////////////////////////////////////////// void TF2::add_task (Task& task) { + bool enabled = context.hooks.enable (false); context.hooks.onAdd (task); + context.hooks.enable (enabled); + _tasks.push_back (task); // For subsequent queries _added_tasks.push_back (task); // For commit/synch @@ -167,7 +170,10 @@ bool TF2::modify_task (const Task& task) if (i->get ("uuid") == uuid) { Task hookTask (task); + + bool enabled = context.hooks.enable (false); context.hooks.onModify (*i, hookTask); + context.hooks.enable (enabled); *i = hookTask; _modified_tasks.push_back (hookTask);