diff --git a/src/base/channel_addr.hh b/src/base/channel_addr.hh index 55d227beed..ad32d04631 100644 --- a/src/base/channel_addr.hh +++ b/src/base/channel_addr.hh @@ -154,6 +154,7 @@ class ChannelAddr /** * The ChanneelAddrRange class describes a contiguous range of * addresses in a contiguous channel-local address space. + * The start is inclusive, the end is not. */ class ChannelAddrRange { @@ -173,15 +174,15 @@ class ChannelAddrRange constexpr ChannelAddrRange(const ChannelAddrRange &) = default; - constexpr ChannelAddr size() const { return _end - _start + 1; } + constexpr ChannelAddr size() const { return _end - _start; } - constexpr bool valid() const { return _start <= _end; } + constexpr bool valid() const { return _start < _end; } constexpr ChannelAddr start() const { return _start; } constexpr ChannelAddr end() const { return _end; } constexpr bool contains(ChannelAddr a) const { - return a >= _start && a <= _end; + return a >= _start && a < _end; } /** @} */ // end of api_channel_addr diff --git a/src/base/channel_addr.test.cc b/src/base/channel_addr.test.cc index 47ec0abc16..01aa8b798d 100644 --- a/src/base/channel_addr.test.cc +++ b/src/base/channel_addr.test.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 ARM Limited + * Copyright (c) 2019, 2021 ARM Limited * All rights reserved * * The license below extends only to copyright in the software and shall @@ -50,7 +50,7 @@ TEST(ChannelAddrRange, DefaultInvalid) /* Ensure that range bounds are inclusive */ TEST(ChannelAddrRange, Range) { - ChannelAddrRange range(ChannelAddr(1), ChannelAddr(3)); + ChannelAddrRange range(ChannelAddr(1), ChannelAddr(4)); EXPECT_FALSE(range.contains(ChannelAddr(0))); EXPECT_TRUE(range.contains(ChannelAddr(1))); @@ -59,6 +59,6 @@ TEST(ChannelAddrRange, Range) EXPECT_FALSE(range.contains(ChannelAddr(4))); EXPECT_EQ(range.start(), ChannelAddr(1)); - EXPECT_EQ(range.end(), ChannelAddr(3)); + EXPECT_EQ(range.end(), ChannelAddr(4)); EXPECT_EQ(range.size(), ChannelAddr(3)); }