]> git.mxchange.org Git - simgear.git/commitdiff
Copy constructor and assignment operator for revised IPAddress
authorJames Turner <zakalawe@mac.com>
Wed, 24 Aug 2011 09:30:02 +0000 (02:30 -0700)
committerJames Turner <zakalawe@mac.com>
Wed, 24 Aug 2011 09:30:02 +0000 (02:30 -0700)
simgear/io/raw_socket.cxx
simgear/io/raw_socket.hxx

index 8bcae9852d8fbf47126833c28ceb0c8008437747..7fe2c6884cb61ca49dd07915a74a7bcce7e93bc2 100644 (file)
@@ -67,6 +67,30 @@ IPAddress::IPAddress ( const char* host, int port )
   set ( host, port ) ;
 }
 
+IPAddress::IPAddress( const IPAddress& other ) :
+  addr(NULL)
+{
+  if (other.addr) {
+    addr = (struct sockaddr_in*) malloc(sizeof(struct sockaddr_in));
+    memcpy(addr, other.addr, sizeof(struct sockaddr_in));
+  }
+}
+
+const IPAddress& IPAddress::operator=(const IPAddress& other)
+{
+  if (addr) {
+    free(addr);
+    addr = NULL;
+  }
+
+  if (other.addr) {
+    addr = (struct sockaddr_in*) malloc(sizeof(struct sockaddr_in));
+    memcpy(addr, other.addr, sizeof(struct sockaddr_in));
+  }
+
+  return *this;
+}
+
 void IPAddress::set ( const char* host, int port )
 {
   addr = (struct sockaddr_in*) malloc(sizeof(struct sockaddr_in));
index 6ae529f285e9f5259c0c57a4701beacb6c1c54e0..2b5031f31df0a7bdec937def8772b5447c504dcc 100644 (file)
@@ -46,6 +46,9 @@ public:
   IPAddress ( const char* host, int port ) ;
   ~IPAddress();
   
+  IPAddress( const IPAddress& other );
+  const IPAddress& operator=(const IPAddress& other);
+
   void set ( const char* host, int port ) ;
   const char* getHost () const ;
   unsigned int getPort() const ;