Skip to content

Commit 3aec947

Browse files
[libc][__support/memory_size] fix missing branch and add related tests (#83016)
fix #82644.
1 parent 9de78c4 commit 3aec947

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

libc/src/__support/memory_size.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,11 @@ class SafeMemSize {
5252

5353
LIBC_INLINE SafeMemSize operator+(const SafeMemSize &other) {
5454
type result;
55-
if (LIBC_UNLIKELY((value | other.value) < 0))
55+
if (LIBC_UNLIKELY((value | other.value) < 0)) {
5656
result = -1;
57-
result = value + other.value;
57+
} else {
58+
result = value + other.value;
59+
}
5860
return SafeMemSize{result};
5961
}
6062

libc/test/src/__support/memory_size_test.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,13 @@ TEST(LlvmLibcMemSizeTest, Addition) {
4949
ASSERT_FALSE((max + SafeMemSize{static_cast<size_t>(1)}).valid());
5050
ASSERT_FALSE((third + third + third + third).valid());
5151
ASSERT_FALSE((half + half + half).valid());
52+
53+
ASSERT_FALSE((SafeMemSize{static_cast<size_t>(-1)} +
54+
SafeMemSize{static_cast<size_t>(2)})
55+
.valid());
56+
ASSERT_FALSE((SafeMemSize{static_cast<size_t>(2)} +
57+
SafeMemSize{static_cast<size_t>(-1)})
58+
.valid());
5259
}
5360

5461
TEST(LlvmLibcMemSizeTest, Multiplication) {

0 commit comments

Comments
 (0)