mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-21 20:55:11 +00:00
style: clang-tidy: default checks and fix bug in iostream deconstruction
``` /pybind11/include/pybind11/iostream.h:71:9: warning: Call to virtual method 'pythonbuf::sync' during destruction bypasses virtual dispatch [clang-analyzer-optin.cplusplus.VirtualCall] sync(); ^ /pybind11/tests/test_iostream.cpp:72:5: note: Calling '~scoped_ostream_redirect' }); ```
This commit is contained in:
parent
4d78640830
commit
e7bafc8ec1
@ -1,7 +1,6 @@
|
||||
FormatStyle: file
|
||||
|
||||
Checks: '
|
||||
-*,
|
||||
llvm-namespace-comment,
|
||||
modernize-use-override,
|
||||
readability-container-size-empty,
|
||||
|
@ -38,7 +38,10 @@ private:
|
||||
return sync() == 0 ? traits_type::not_eof(c) : traits_type::eof();
|
||||
}
|
||||
|
||||
int sync() override {
|
||||
// This function must be non-virtual to be called in a destructor. If the
|
||||
// rare MSVC test failure shows up with this version, then this should be
|
||||
// simplified to a fully qualified call.
|
||||
int _sync() {
|
||||
if (pbase() != pptr()) {
|
||||
// This subtraction cannot be negative, so dropping the sign
|
||||
str line(pbase(), static_cast<size_t>(pptr() - pbase()));
|
||||
@ -54,6 +57,10 @@ private:
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sync() override {
|
||||
return _sync();
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
pythonbuf(object pyostream, size_t buffer_size = 1024)
|
||||
@ -68,7 +75,7 @@ public:
|
||||
|
||||
/// Sync before destroy
|
||||
~pythonbuf() override {
|
||||
sync();
|
||||
_sync();
|
||||
}
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user