From b01722554a69d1850c026d529e5b0a5e023961cd Mon Sep 17 00:00:00 2001 From: Adam Mitz Date: Sun, 31 Oct 2021 21:07:11 -0500 Subject: getting libACE to compile with /std:c++20 avoid ambiguous calls to overloaded operators --- ACE/ace/Malloc.h | 2 ++ ACE/ace/Malloc_T.cpp | 26 +++++++++++++++----------- 2 files changed, 17 insertions(+), 11 deletions(-) (limited to 'ACE') diff --git a/ACE/ace/Malloc.h b/ACE/ace/Malloc.h index 06cc550c507..5f8e2fed9bc 100644 --- a/ACE/ace/Malloc.h +++ b/ACE/ace/Malloc.h @@ -287,6 +287,8 @@ public: void dump () const; }; + typedef ACE_Malloc_Header *MALLOC_HEADER_PTR; + /** * @class ACE_Name_Node * diff --git a/ACE/ace/Malloc_T.cpp b/ACE/ace/Malloc_T.cpp index ff8d6563db0..47d9126e96a 100644 --- a/ACE/ace/Malloc_T.cpp +++ b/ACE/ace/Malloc_T.cpp @@ -633,8 +633,8 @@ ACE_Malloc_T::shared_malloc (size_t nbytes) (nbytes + sizeof (MALLOC_HEADER) - 1) / sizeof (MALLOC_HEADER) + 1; // Add one for the itself. - MALLOC_HEADER *prevp = 0; - MALLOC_HEADER *currp = 0; + typename ACE_CB::MALLOC_HEADER_PTR prevp = 0; + typename ACE_CB::MALLOC_HEADER_PTR currp = 0; ACE_SEH_TRY { @@ -671,7 +671,7 @@ ACE_Malloc_T::shared_malloc (size_t nbytes) // allocate at tail end. ACE_MALLOC_STATS (++this->cb_ptr_->malloc_stats_.nblocks_); currp->size_ -= nunits; - currp += currp->size_; + currp += static_cast (currp->size_); MALLOC_HEADER::init_ptr (&currp->next_block_, 0, this->cb_ptr_); @@ -697,7 +697,7 @@ ACE_Malloc_T::shared_malloc (size_t nbytes) if (remap_addr != 0) this->cb_ptr_ = (ACE_CB *) remap_addr; - if (currp != 0) + if (currp) { ACE_MALLOC_STATS (++this->cb_ptr_->malloc_stats_.nblocks_); ACE_MALLOC_STATS (++this->cb_ptr_->malloc_stats_.nchunks_); @@ -787,8 +787,8 @@ ACE_Malloc_T::shared_free (void *ap) return; // Adjust AP to point to the block MALLOC_HEADER - MALLOC_HEADER *blockp = ((MALLOC_HEADER *) ap) - 1; - MALLOC_HEADER *currp = this->cb_ptr_->freep_; + typename ACE_CB::MALLOC_HEADER_PTR blockp = ((MALLOC_HEADER *) ap) - 1; + typename ACE_CB::MALLOC_HEADER_PTR currp = this->cb_ptr_->freep_; // Search until we find the location where the blocks belongs. Note // that addresses are kept in sorted order. @@ -797,18 +797,20 @@ ACE_Malloc_T::shared_free (void *ap) { for (; blockp <= currp - || blockp >= (MALLOC_HEADER *) currp->next_block_; + || blockp >= currp->next_block_; currp = currp->next_block_) { - if (currp >= (MALLOC_HEADER *) currp->next_block_ + if (currp >= currp->next_block_ && (blockp > currp - || blockp < (MALLOC_HEADER *) currp->next_block_)) + || blockp < currp->next_block_)) // Freed block at the start or the end of the memory pool. break; } // Join to upper neighbor. - if ((blockp + blockp->size_) == currp->next_block_) + typename ACE_CB::MALLOC_HEADER_PTR next = blockp; + next += static_cast (blockp->size_); // ACE_Based_Pointer has += but not + + if (next == currp->next_block_) { ACE_MALLOC_STATS (--this->cb_ptr_->malloc_stats_.nblocks_); blockp->size_ += currp->next_block_->size_; @@ -818,7 +820,9 @@ ACE_Malloc_T::shared_free (void *ap) blockp->next_block_ = currp->next_block_; // Join to lower neighbor. - if ((currp + currp->size_) == blockp) + next = currp; + next += static_cast (currp->size_); + if (next == blockp) { ACE_MALLOC_STATS (--this->cb_ptr_->malloc_stats_.nblocks_); currp->size_ += blockp->size_; -- cgit v1.2.1