Skip to content

Commit 23b2e4f

Browse files
CodeFactor and use shared_ptr to string instead of char *
1 parent 7a819e0 commit 23b2e4f

5 files changed

Lines changed: 221 additions & 150 deletions

File tree

ACE/ace/INET_Addr.cpp

Lines changed: 17 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ ACE_INET_Addr::reset ()
166166

167167
ACE_INET_Addr::ACE_INET_Addr ()
168168
: ACE_Addr (determine_type (), sizeof (inet_addr_)),
169-
if_name_( 0 )
169+
if_name_ (nullptr)
170170
{
171171
// ACE_TRACE ("ACE_INET_Addr::ACE_INET_Addr");
172172
this->reset_i ();
@@ -292,7 +292,7 @@ ACE_INET_Addr::set (const char address[], int address_family)
292292

293293
ACE_INET_Addr::ACE_INET_Addr (const char address[], int address_family)
294294
: ACE_Addr (determine_type (), sizeof (inet_addr_)),
295-
if_name_( 0 )
295+
if_name_ (nullptr)
296296
{
297297
ACE_TRACE ("ACE_INET_Addr::ACE_INET_Addr");
298298
this->set (address, address_family);
@@ -301,7 +301,7 @@ ACE_INET_Addr::ACE_INET_Addr (const char address[], int address_family)
301301
#if defined (ACE_HAS_WCHAR)
302302
ACE_INET_Addr::ACE_INET_Addr (const wchar_t address[], int address_family)
303303
: ACE_Addr (determine_type (), sizeof (inet_addr_)),
304-
if_name_( 0 )
304+
if_name_ (nullptr)
305305
{
306306
ACE_TRACE ("ACE_INET_Addr::ACE_INET_Addr");
307307
this->set (address, address_family);
@@ -313,13 +313,13 @@ ACE_INET_Addr::ACE_INET_Addr (const wchar_t address[], int address_family)
313313

314314
ACE_INET_Addr::ACE_INET_Addr (const ACE_INET_Addr &sa)
315315
: ACE_Addr (sa.get_type (), sa.get_size()),
316-
if_name_( 0 )
316+
if_name_ (nullptr)
317317
{
318318
ACE_TRACE ("ACE_INET_Addr::ACE_INET_Addr");
319319
this->set (sa);
320320
if (sa.if_name_)
321321
{
322-
this->set_interface_name ( sa.if_name_ );
322+
this->set_interface_name (sa.if_name_->c_str ());
323323
}
324324
}
325325

@@ -549,7 +549,7 @@ ACE_INET_Addr::ACE_INET_Addr (u_short port_number,
549549
const char host_name[],
550550
int address_family)
551551
: ACE_Addr (determine_type (), sizeof (inet_addr_)),
552-
if_name_( 0 )
552+
if_name_ (nullptr)
553553
{
554554
ACE_TRACE ("ACE_INET_Addr::ACE_INET_Addr");
555555
ACE_OS::memset (&this->inet_addr_, 0, sizeof (this->inet_addr_));
@@ -568,7 +568,7 @@ ACE_INET_Addr::ACE_INET_Addr (u_short port_number,
568568
const wchar_t host_name[],
569569
int address_family)
570570
: ACE_Addr (determine_type (), sizeof (inet_addr_)),
571-
if_name_( 0 )
571+
if_name_ (nullptr)
572572
{
573573
ACE_TRACE ("ACE_INET_Addr::ACE_INET_Addr");
574574
ACE_OS::memset (&this->inet_addr_, 0, sizeof (this->inet_addr_));
@@ -668,7 +668,7 @@ ACE_INET_Addr::set_addr (const void *addr, int /* len */, int map)
668668
// Creates a ACE_INET_Addr from a sockaddr_in structure.
669669
ACE_INET_Addr::ACE_INET_Addr (const sockaddr_in *addr, int len)
670670
: ACE_Addr (determine_type (), sizeof (inet_addr_)),
671-
if_name_( 0 )
671+
if_name_ (nullptr)
672672
{
673673
ACE_TRACE ("ACE_INET_Addr::ACE_INET_Addr");
674674
this->set (addr, len);
@@ -678,7 +678,7 @@ ACE_INET_Addr::ACE_INET_Addr (const sockaddr_in *addr, int len)
678678
ACE_INET_Addr::ACE_INET_Addr (u_short port_number,
679679
ACE_UINT32 inet_address)
680680
: ACE_Addr (determine_type (), sizeof (inet_addr_)),
681-
if_name_( 0 )
681+
if_name_ (nullptr)
682682
{
683683
ACE_TRACE ("ACE_INET_Addr::ACE_INET_Addr");
684684
if (this->set (port_number, inet_address) == -1)
@@ -693,7 +693,7 @@ ACE_INET_Addr::ACE_INET_Addr (const char port_name[],
693693
const char host_name[],
694694
const char protocol[])
695695
: ACE_Addr (determine_type (), sizeof (inet_addr_)),
696-
if_name_( 0 )
696+
if_name_ (nullptr)
697697
{
698698
ACE_TRACE ("ACE_INET_Addr::ACE_INET_Addr");
699699
if (this->set (port_name,
@@ -708,7 +708,7 @@ ACE_INET_Addr::ACE_INET_Addr (const wchar_t port_name[],
708708
const wchar_t host_name[],
709709
const wchar_t protocol[])
710710
: ACE_Addr (determine_type (), sizeof (inet_addr_)),
711-
if_name_( 0 )
711+
if_name_ (nullptr)
712712
{
713713
ACE_TRACE ("ACE_INET_Addr::ACE_INET_Addr");
714714
if (this->set (port_name,
@@ -724,7 +724,7 @@ ACE_INET_Addr::ACE_INET_Addr (const char port_name[],
724724
ACE_UINT32 inet_address,
725725
const char protocol[])
726726
: ACE_Addr (determine_type (), sizeof (inet_addr_)),
727-
if_name_( 0 )
727+
if_name_ (nullptr)
728728
{
729729
ACE_TRACE ("ACE_INET_Addr::ACE_INET_Addr");
730730
if (this->set (port_name,
@@ -739,7 +739,7 @@ ACE_INET_Addr::ACE_INET_Addr (const wchar_t port_name[],
739739
ACE_UINT32 inet_address,
740740
const wchar_t protocol[])
741741
: ACE_Addr (determine_type (), sizeof (inet_addr_)),
742-
if_name_( 0 )
742+
if_name_ (nullptr)
743743
{
744744
ACE_TRACE ("ACE_INET_Addr::ACE_INET_Addr");
745745
if (this->set (port_name,
@@ -752,7 +752,6 @@ ACE_INET_Addr::ACE_INET_Addr (const wchar_t port_name[],
752752

753753
ACE_INET_Addr::~ACE_INET_Addr ()
754754
{
755-
delete [] this->if_name_;
756755
}
757756

758757
int
@@ -1019,7 +1018,7 @@ ACE_INET_Addr::set_interface (const char *intf_name)
10191018
}
10201019
#endif /* ACE_LINUX && ACE_HAS_IPV6 */
10211020

1022-
const char *
1021+
std::shared_ptr<const std::string>
10231022
ACE_INET_Addr::get_interface_name () const
10241023
{
10251024
return this->if_name_;
@@ -1028,25 +1027,13 @@ ACE_INET_Addr::get_interface_name () const
10281027
void
10291028
ACE_INET_Addr::set_interface_name (const char * if_name)
10301029
{
1031-
size_t length (if_name == 0 ? 0 : strnlen (if_name, 52)); // stops counting at 52 if null byte not found by then
1032-
if (length > 50)
1033-
{
1034-
// Interface names are usually just a few characters, Windows are the longest, as they are UUIDs
1035-
std::string msg("ACE_INET_Addr::set_interface_name: if_name is too long and likely not an interface name: ");
1036-
msg += if_name;
1037-
msg += "\n";
1038-
ACELIB_ERROR ((LM_ERROR, ACE_TEXT_CHAR_TO_TCHAR (msg.c_str())));
1039-
return;
1040-
}
1041-
delete [] this->if_name_;
1042-
if (length == 0)
1030+
if (if_name == nullptr)
10431031
{
1044-
this->if_name_ = 0;
1032+
this->if_name_.reset ();
10451033
}
10461034
else
10471035
{
1048-
this->if_name_ = new char [length + 1];
1049-
ACE_OS::strncpy (this->if_name_, if_name, length + 1);
1036+
this->if_name_ = std::make_shared<const std::string> (if_name);
10501037
}
10511038
}
10521039

ACE/ace/INET_Addr.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
#endif /* ACE_LACKS_PRAGMA_ONCE */
2020

2121
#include "ace/Addr.h"
22+
23+
#include <memory>
24+
#include <string>
2225
#include <vector>
2326

2427
ACE_BEGIN_VERSIONED_NAMESPACE_DECL
@@ -291,7 +294,7 @@ class ACE_Export ACE_INET_Addr : public ACE_Addr
291294
* applicable only in certain, limited scopes, notably calls to
292295
* ACE::get_ip_interfaces().
293296
*/
294-
const char * get_interface_name () const;
297+
std::shared_ptr<const std::string> get_interface_name () const;
295298

296299
/**
297300
* For informational purposes only, set the name of the network interface to
@@ -435,7 +438,7 @@ class ACE_Export ACE_INET_Addr : public ACE_Addr
435438
std::vector<union ip46> inet_addrs_;
436439
std::vector<union ip46>::iterator inet_addrs_iter_;
437440

438-
char * if_name_;
441+
std::shared_ptr<const std::string> if_name_;
439442
};
440443

441444
ACE_END_VERSIONED_NAMESPACE_DECL

ACE/ace/SOCK_Dgram.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -877,8 +877,11 @@ ACE_SOCK_Dgram::make_multicast_ifaddr6 (ipv6_mreq *ret_mreq,
877877

878878
if (net_if_ace_inet_addr.is_ip_equal (if_addrs[if_cnt]))
879879
{
880-
if (if_addrs[if_cnt].get_interface_name ())
881-
lmreq.ipv6mr_interface = ACE_OS::if_nametoindex (if_addrs[if_cnt].get_interface_name ());
880+
auto if_name = if_addrs[if_cnt].get_interface_name ();
881+
if (if_name)
882+
{
883+
lmreq.ipv6mr_interface = ACE_OS::if_nametoindex (if_name->c_str ());
884+
}
882885
break;
883886
}
884887
}

0 commit comments

Comments
 (0)