Avoid integer overflow detected by the compiler.

Trying to calculate std::abs(min_int) results in an int overflow.

Original author: asmok@.

Bug: None
Change-Id: I984e9ba4f48411a583a55cc3f9c66c9a1cc8dc92
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/318120
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#40660}
This commit is contained in:
Mirko Bonadei 2023-08-29 14:21:54 +02:00 committed by WebRTC LUCI CQ
parent d23d450a50
commit 83a95f748f

View File

@ -25,6 +25,7 @@
*/ */
#include <stdlib.h> #include <stdlib.h>
#include <limits.h>
#include "rtc_base/checks.h" #include "rtc_base/checks.h"
#include "common_audio/signal_processing/include/signal_processing_library.h" #include "common_audio/signal_processing/include/signal_processing_library.h"
@ -67,7 +68,8 @@ int32_t WebRtcSpl_MaxAbsValueW32C(const int32_t* vector, size_t length) {
RTC_DCHECK_GT(length, 0); RTC_DCHECK_GT(length, 0);
for (i = 0; i < length; i++) { for (i = 0; i < length; i++) {
absolute = abs((int)vector[i]); absolute =
(vector[i] != INT_MIN) ? abs((int)vector[i]) : INT_MAX + (uint32_t)1;
if (absolute > maximum) { if (absolute > maximum) {
maximum = absolute; maximum = absolute;
} }