From ebb0db62d1a40407f10f4537439be4c7256dfcde Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Thu, 4 Jul 2019 15:24:23 -0400 Subject: [PATCH] kits: Only export private dummy copy constructors for R5 ABI. Fixes #546 (after all these years!) --- src/kits/app/Application.cpp | 16 +++++++++------- src/kits/app/Handler.cpp | 27 +++++++++++++-------------- src/kits/app/Looper.cpp | 2 ++ src/kits/app/MessageRunner.cpp | 2 ++ src/kits/storage/AppFileInfo.cpp | 6 ++++-- src/kits/storage/MimeType.cpp | 4 +++- src/kits/storage/NodeInfo.cpp | 2 ++ 7 files changed, 35 insertions(+), 24 deletions(-) diff --git a/src/kits/app/Application.cpp b/src/kits/app/Application.cpp index 4ceddb847f..d116fa60be 100644 --- a/src/kits/app/Application.cpp +++ b/src/kits/app/Application.cpp @@ -291,6 +291,7 @@ BApplication::BApplication(BMessage* data) } +#ifdef _BEOS_R5_COMPATIBLE_ BApplication::BApplication(uint32 signature) { } @@ -301,6 +302,14 @@ BApplication::BApplication(const BApplication &rhs) } +BApplication& +BApplication::operator=(const BApplication &rhs) +{ + return *this; +} +#endif + + BApplication::~BApplication() { Lock(); @@ -340,13 +349,6 @@ BApplication::~BApplication() } -BApplication& -BApplication::operator=(const BApplication &rhs) -{ - return *this; -} - - void BApplication::_InitData(const char* signature, bool initGUI, status_t* _error) { diff --git a/src/kits/app/Handler.cpp b/src/kits/app/Handler.cpp index 72f4b38368..c0547e5677 100644 --- a/src/kits/app/Handler.cpp +++ b/src/kits/app/Handler.cpp @@ -642,20 +642,6 @@ BHandler::_ObserverList() } -BHandler::BHandler(const BHandler &) -{ - // No copy construction allowed. -} - - -BHandler & -BHandler::operator=(const BHandler &) -{ - // No assignments allowed. - return *this; -} - - void BHandler::SetLooper(BLooper* looper) { @@ -682,6 +668,19 @@ _ReservedHandler1__8BHandler(BHandler* handler, uint32 what, handler->BHandler::SendNotices(what, notice); } + +BHandler::BHandler(const BHandler &) +{ + // No copy construction allowed. +} + + +BHandler & +BHandler::operator=(const BHandler &) +{ + // No assignments allowed. + return *this; +} #endif void BHandler::_ReservedHandler2() {} diff --git a/src/kits/app/Looper.cpp b/src/kits/app/Looper.cpp index 80086fc1f3..e10f684385 100644 --- a/src/kits/app/Looper.cpp +++ b/src/kits/app/Looper.cpp @@ -832,6 +832,7 @@ void BLooper::_ReservedLooper5() {} void BLooper::_ReservedLooper6() {} +#ifdef _BEOS_R5_COMPATIBLE_ BLooper::BLooper(const BLooper& other) { // Copy construction not allowed @@ -844,6 +845,7 @@ BLooper::operator=(const BLooper& other) // Looper copying not allowed return *this; } +#endif BLooper::BLooper(int32 priority, port_id port, const char* name) diff --git a/src/kits/app/MessageRunner.cpp b/src/kits/app/MessageRunner.cpp index 4a982a47bb..be3f71d484 100644 --- a/src/kits/app/MessageRunner.cpp +++ b/src/kits/app/MessageRunner.cpp @@ -168,6 +168,7 @@ void BMessageRunner::_ReservedMessageRunner5() {} void BMessageRunner::_ReservedMessageRunner6() {} +#ifdef _BEOS_R5_COMPATIBLE_ //! Privatized copy constructor to prevent usage. BMessageRunner::BMessageRunner(const BMessageRunner &) : @@ -182,6 +183,7 @@ BMessageRunner::operator=(const BMessageRunner&) { return* this; } +#endif /*! Initializes the BMessageRunner. diff --git a/src/kits/storage/AppFileInfo.cpp b/src/kits/storage/AppFileInfo.cpp index f111a582cc..fa8b9425aa 100644 --- a/src/kits/storage/AppFileInfo.cpp +++ b/src/kits/storage/AppFileInfo.cpp @@ -65,7 +65,7 @@ static const int32 kIconForTypeResourceID = 0; static const int32 kCatalogEntryResourceID = 1; // R5 also exports these (Tracker is using them): -// (maybe we better want to drop them silently and declare +// (maybe we better want to drop them silently and declare // the above in a public Haiku header - and use that one in // Tracker when compiled for Haiku) extern const uint32 MINI_ICON_TYPE, LARGE_ICON_TYPE; @@ -578,7 +578,7 @@ BAppFileInfo::GetVersionInfo(version_info* info, version_kind kind) const } else return B_ERROR; - // return result + // return result return B_OK; } @@ -958,6 +958,7 @@ void BAppFileInfo::_ReservedAppFileInfo2() {} void BAppFileInfo::_ReservedAppFileInfo3() {} +#ifdef _BEOS_R5_COMPATIBLE_ //! Privatized assignment operator to prevent usage. BAppFileInfo& BAppFileInfo::operator=(const BAppFileInfo&) @@ -970,6 +971,7 @@ BAppFileInfo::operator=(const BAppFileInfo&) BAppFileInfo::BAppFileInfo(const BAppFileInfo&) { } +#endif /*! Initializes a BMimeType to the signature of the associated file. diff --git a/src/kits/storage/MimeType.cpp b/src/kits/storage/MimeType.cpp index d03b4d06b2..8dd7a53709 100644 --- a/src/kits/storage/MimeType.cpp +++ b/src/kits/storage/MimeType.cpp @@ -1200,6 +1200,7 @@ void BMimeType::_ReservedMimeType2() {} void BMimeType::_ReservedMimeType3() {} +#ifdef _BEOS_R5_COMPATIBLE_ // assignment operator. // Unimplemented BMimeType& @@ -1215,6 +1216,7 @@ BMimeType::operator=(const BMimeType &) BMimeType::BMimeType(const BMimeType &) { } +#endif status_t @@ -1240,7 +1242,7 @@ BMimeType::GetSupportedTypes(BMessage* types) \c B_STRING_TYPE in \a types. For each supported type the result of BMimeType::GetSupportingApps() will - afterwards include the signature of this application. + afterwards include the signature of this application. \a fullSync specifies whether or not any types that are no longer listed as supported types as of this call to SetSupportedTypes() shall be diff --git a/src/kits/storage/NodeInfo.cpp b/src/kits/storage/NodeInfo.cpp index 97837b2959..aebb00b658 100644 --- a/src/kits/storage/NodeInfo.cpp +++ b/src/kits/storage/NodeInfo.cpp @@ -608,6 +608,7 @@ void BNodeInfo::_ReservedNodeInfo2() {} void BNodeInfo::_ReservedNodeInfo3() {} +#ifdef _BEOS_R5_COMPATIBLE_ /*! Assignment operator is declared private to prevent it from being created automatically by the compiler. */ @@ -624,3 +625,4 @@ BNodeInfo::operator=(const BNodeInfo &nodeInfo) BNodeInfo::BNodeInfo(const BNodeInfo &) { } +#endif