fix(QueryHandler): use std::shared_ptr
for jsonObject
#18
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The
QueryHandler
hasJsonObject
that is freed in the destructorThe implicit copy-ctor copies the pointer only,
where it probably should do a deep copy.
This leads to use-after-free situations,
e.g. when calling
RecordingsResponder::getRecordingByRequest()
at the beginning of `RecordingsResponder::saveMarks()'.A quick fix for the bug at hand is to make a deep copy of the
jsonObject
, that's what this commit is about.An alternative variant would be to forbid copying of the
QueryHandler
and fix the fallout, e.g. by passing a reference (instead of a copy) of theQueryHandler
instance to functions likeRecordingsResponder::getRecordingByRequest()
.Ideally a
const
reference would be passed, but that would incur more changes in to theQueryHandler
, i.e. making all theget*
andhas*
functionsconst
, which are needlessly non-const currently.I've opted for the smaller change (the quick fix), while I would probably prefer the alternative variant.
Let me know what you prefer.