]> git.mxchange.org Git - simgear.git/blobdiff - simgear/io/raw_socket.cxx
Copy constructor and assignment operator for revised IPAddress
[simgear.git] / simgear / io / raw_socket.cxx
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));