From: Stephen Morris Date: Thu, 4 Jul 2013 11:53:09 +0000 (+0100) Subject: [2980] Made LibraryHandle copy constructor and assignment operator private. X-Git-Tag: bind10-1.2.0beta1-release~340^2~6^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=43ea555f6ae497ec40672b951d8a00c437b89c0a;p=thirdparty%2Fkea.git [2980] Made LibraryHandle copy constructor and assignment operator private. This reduces the risk of someone taking a copy and being left with a "dangling pointer" to a callout manager. --- diff --git a/src/lib/hooks/library_handle.h b/src/lib/hooks/library_handle.h index 6cf522c7d7..4fe47cd301 100644 --- a/src/lib/hooks/library_handle.h +++ b/src/lib/hooks/library_handle.h @@ -116,6 +116,25 @@ public: bool deregisterAllCallouts(const std::string& name); private: + /// @brief Copy constructor + /// + /// Private (with no implementation) as it makes no sense to copy an object + /// of this type. All code receives a reference to an existing handle which + /// is tied to a particular CalloutManager. Creating a copy of that handle + /// runs the risk of a "dangling pointer" to the original handle's callout + /// manager. + /// + /// @param Unused - should be the object to copy. + LibraryHandle(const LibraryHandle&); + + /// @brief Assignment operator + /// + /// Declared private like the copy constructor for the same reasons. It too + /// has no implementation. + /// + /// @param Unused - should be the object to copy. + LibraryHandle& operator=(const LibraryHandle&); + /// Back pointer to the collection object for the library CalloutManager* callout_manager_;