mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-06-26 10:54:26 +02:00
JSON: Fix memory leak in parser
- Fix JSON root object leaking out by using delete. This is by no means a comprehensive fix since exceptions are involved in a lot of places, but it does fix the memory leak in all cases checked in Taskwarrior's test suite. - Going with a shared_ptr or unique_ptr here might be a better solution, but would involve more code changes.
This commit is contained in:
parent
5f8469269e
commit
2ad3713e8c
2 changed files with 6 additions and 0 deletions
|
@ -426,6 +426,8 @@ void Hooks::assertValidJSON (const std::vector <std::string>& input) const
|
||||||
context.error (STRING_HOOK_ERROR_NOUUID);
|
context.error (STRING_HOOK_ERROR_NOUUID);
|
||||||
throw 0;
|
throw 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
delete root;
|
||||||
}
|
}
|
||||||
|
|
||||||
catch (const std::string& e)
|
catch (const std::string& e)
|
||||||
|
@ -479,6 +481,8 @@ void Hooks::assertSameTask (const std::vector <std::string>& input, const Task&
|
||||||
context.error (format (STRING_HOOK_ERROR_SAME2, uuid, json_uuid));
|
context.error (format (STRING_HOOK_ERROR_SAME2, uuid, json_uuid));
|
||||||
throw 0;
|
throw 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
delete root_obj;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -706,6 +706,8 @@ void Task::parseJSON (const std::string& line)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
delete root;
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue