Avoids destruction or processing of a queued message in
recursive process_message() call.
message_t *message)
{
enumerator_t *enumerator;
+ message_t *queued;
status_t status;
task_t *task;
if (this->queued && this->active_tasks->get_count(this->active_tasks) == 0)
{
- status = this->public.task_manager.process_message(
- &this->public.task_manager, this->queued);
- this->queued->destroy(this->queued);
+ queued = this->queued;
this->queued = NULL;
+ status = this->public.task_manager.process_message(
+ &this->public.task_manager, queued);
+ queued->destroy(queued);
if (status == DESTROY_ME)
{
return status;