Browse Source

[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.
Stephen Morris 11 years ago
parent
commit
43ea555f6a
1 changed files with 19 additions and 0 deletions
  1. 19 0
      src/lib/hooks/library_handle.h

+ 19 - 0
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_;