tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 2cf5206b999774523b49ba698abcd26d14c8f50a
parent 4d12bd20f5d697bd7aecc8d00b8bfb50ee55abd4
Author: serge-sans-paille <sguelton@mozilla.com>
Date:   Tue, 14 Oct 2025 07:16:23 +0000

Bug 1993880 - Use delegating constructors in mfbt/RangedPtr.h r=emilio

Differential Revision: https://phabricator.services.mozilla.com/D268353

Diffstat:
Mmfbt/RangedPtr.h | 62+++++++++++++-------------------------------------------------
1 file changed, 13 insertions(+), 49 deletions(-)

diff --git a/mfbt/RangedPtr.h b/mfbt/RangedPtr.h @@ -16,8 +16,8 @@ #include "mozilla/Assertions.h" #include "mozilla/Attributes.h" -#include <stdint.h> #include <cstddef> +#include <cstdint> namespace mozilla { @@ -62,7 +62,7 @@ class RangedPtr { #if defined(DEBUG) || defined(FUZZING) return RangedPtr<T>(aPtr, mRangeStart, mRangeEnd); #else - return RangedPtr<T>(aPtr, nullptr, size_t(0)); + return RangedPtr<T>(aPtr, nullptr, nullptr); #endif } @@ -80,71 +80,35 @@ class RangedPtr { MOZ_ASSERT_DEBUG_OR_FUZZING(mRangeStart <= mRangeEnd); checkSanity(); } + RangedPtr(T* aPtr, T* aStart, size_t aLength) - : mPtr(aPtr) -#if defined(DEBUG) || defined(FUZZING) - , - mRangeStart(aStart), - mRangeEnd(aStart + aLength) -#endif - { + : RangedPtr(aPtr, aStart, aStart + aLength) { + /* Extra overflow check. */ MOZ_ASSERT_DEBUG_OR_FUZZING(aLength <= size_t(-1) / sizeof(T)); - MOZ_ASSERT_DEBUG_OR_FUZZING(reinterpret_cast<uintptr_t>(mRangeStart) + - aLength * sizeof(T) >= - reinterpret_cast<uintptr_t>(mRangeStart)); - checkSanity(); } - /* Equivalent to RangedPtr(aPtr, aPtr, aLength). */ - RangedPtr(T* aPtr, size_t aLength) - : mPtr(aPtr) -#if defined(DEBUG) || defined(FUZZING) - , - mRangeStart(aPtr), - mRangeEnd(aPtr + aLength) -#endif - { - MOZ_ASSERT_DEBUG_OR_FUZZING(aLength <= size_t(-1) / sizeof(T)); - MOZ_ASSERT_DEBUG_OR_FUZZING(reinterpret_cast<uintptr_t>(mRangeStart) + - aLength * sizeof(T) >= - reinterpret_cast<uintptr_t>(mRangeStart)); - checkSanity(); - } + RangedPtr(T* aPtr, size_t aLength) : RangedPtr(aPtr, aPtr, aLength) {} - /* Equivalent to RangedPtr(aArr, aArr, N). */ template <size_t N> - explicit RangedPtr(T (&aArr)[N]) - : mPtr(aArr) -#if defined(DEBUG) || defined(FUZZING) - , - mRangeStart(aArr), - mRangeEnd(aArr + N) -#endif - { - checkSanity(); - } + explicit RangedPtr(T (&aArr)[N]) : RangedPtr(aArr, aArr, N) {} RangedPtr(const RangedPtr& aOther) - : mPtr(aOther.mPtr) #if defined(DEBUG) || defined(FUZZING) - , - mRangeStart(aOther.mRangeStart), - mRangeEnd(aOther.mRangeEnd) + : RangedPtr(aOther.mPtr, aOther.mRangeStart, aOther.mRangeEnd) +#else + : RangedPtr(aOther.mPtr, nullptr, nullptr) #endif { - checkSanity(); } template <typename U> MOZ_IMPLICIT RangedPtr(const RangedPtr<U>& aOther) - : mPtr(aOther.mPtr) #if defined(DEBUG) || defined(FUZZING) - , - mRangeStart(aOther.mRangeStart), - mRangeEnd(aOther.mRangeEnd) + : RangedPtr(aOther.mPtr, aOther.mRangeStart, aOther.mRangeEnd) +#else + : RangedPtr(aOther.mPtr, nullptr, nullptr) #endif { - checkSanity(); } T* get() const { return mPtr; }