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:
| M | mfbt/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; }