File tree Expand file tree Collapse file tree 1 file changed +9
-12
lines changed Expand file tree Collapse file tree 1 file changed +9
-12
lines changed Original file line number Diff line number Diff 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
You can’t perform that action at this time.
0 commit comments