Skip to content

Commit 105b619

Browse files
committed
use mul_overflows util in calculate_nbytes
1 parent c469694 commit 105b619

File tree

1 file changed

+9
-12
lines changed

1 file changed

+9
-12
lines changed

runtime/executor/method_meta.cpp

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -56,23 +56,20 @@ size_t calculate_nbytes(
5656
Span<const int32_t> sizes,
5757
executorch::aten::ScalarType scalar_type) {
5858
size_t n = 1;
59-
size_t prev_n = 1;
6059
for (size_t i = 0; i < sizes.size(); i++) {
61-
prev_n = n;
62-
n *= sizes[i];
63-
// Check for overflow
64-
ET_CHECK(sizes[i] == 0 || n / sizes[i] == prev_n);
60+
size_t next_n;
61+
bool overflow =
62+
c10::mul_overflows(n, static_cast<size_t>(sizes[i]), &next_n);
63+
ET_CHECK(!overflow);
64+
n = next_n;
6565
}
6666

6767
size_t elem_size = executorch::runtime::elementSize(scalar_type);
68+
size_t total_bytes;
69+
bool overflow = c10::mul_overflows(n, elem_size, &total_bytes);
70+
ET_CHECK(!overflow);
6871

69-
prev_n = n;
70-
n = n * elem_size;
71-
72-
// Check for overflow
73-
ET_CHECK(elem_size == 0 || n / elem_size == prev_n);
74-
75-
return n;
72+
return total_bytes;
7673
}
7774

7875
} // namespace

0 commit comments

Comments
 (0)