Fix compile failure on MacOS X
std::shared_ptr::unique() is deprecated in C++17 and removed in C++20.
Inspired by PR#1362.
Snippet of the failure:
```
In file included from ../../src/terminal/terminal.h:42:
../../src/terminal/terminalframebuffer.h:431:23: error: 'unique' is deprecated [-Werror,-Wdeprecated-declarations]
431 | if ( !mutable_row.unique() ) {
| ^
/Applications/Xcode_16.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/__memory/shared_ptr.h:752:3: note: 'unique' has been explicitly marked deprecated here
752 | _LIBCPP_DEPRECATED_IN_CXX17 _LIBCPP_HIDE_FROM_ABI bool unique() const _NOEXCEPT { return use_count() == 1; }
| ^
/Applications/Xcode_16.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/__config:731:41: note: expanded from macro '_LIBCPP_DEPRECATED_IN_CXX17'
731 | # define _LIBCPP_DEPRECATED_IN_CXX17 _LIBCPP_DEPRECATED
| ^
/Applications/Xcode_16.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/__config:696:49: note: expanded from macro '_LIBCPP_DEPRECATED'
696 | # define _LIBCPP_DEPRECATED __attribute__((__deprecated__))
| ^
1 error generated.
```
This commit is contained in:
committed by
Alex Chernyakhovsky
parent
64ce9aad9a
commit
ee757a2210
@@ -427,8 +427,9 @@ public:
|
||||
if ( row == -1 )
|
||||
row = ds.get_cursor_row();
|
||||
row_pointer& mutable_row = rows.at( row );
|
||||
// If the row is shared, copy it.
|
||||
if ( !mutable_row.unique() ) {
|
||||
// If the row is shared, copy it. This is only safe because mosh isn't
|
||||
// multi-threaded.
|
||||
if ( mutable_row.use_count() > 1 ) {
|
||||
mutable_row = std::make_shared<Row>( *mutable_row );
|
||||
}
|
||||
return mutable_row.get();
|
||||
|
||||
Reference in New Issue
Block a user