cpp-common/bt2: use `std::unique_ptr` to manage `UserMessageIterator::_mSavedLibError`
clang-tidy points out that `UserMessageIterator` has a user-defined
destructor, but default copy constructors and assignment operators.
This is indeed dangerous: if we have an error in `_mSavedLibError` and
the `UserMessageIterator` object gets copied, the error will be released
multiple times, causing a use-after-free.
The most obvious fix would be to explicitly delete the default
definitions of the copy constructors and assignment operators. But
I think it's a bit more idiomatic C++ to use some RAII type to manage
the error. In this case `std::unique_ptr` is a good fit. This lets us
delete the user-defined destructor. The copy constructors and
assignment operators are implicitly deleted, since `unique_ptr` doesn't
have them.
Change-Id: Ia78bbda6a342192cb35c1b6963d3ad7fccaa7c3f
Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
Reviewed-on: https://review.lttng.org/c/babeltrace/+/11844
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
This page took 0.026512 seconds and 4 git commands to generate.