Index: webrtc/modules/audio_processing/aec/aec_core.cc |
diff --git a/webrtc/modules/audio_processing/aec/aec_core.cc b/webrtc/modules/audio_processing/aec/aec_core.cc |
index 3155bad9728dfbe9d051492ca183c8859b02cfa3..0eec22f4e5ef9e078a6ed8c714b2dad5c279d57e 100644 |
--- a/webrtc/modules/audio_processing/aec/aec_core.cc |
+++ b/webrtc/modules/audio_processing/aec/aec_core.cc |
@@ -206,16 +206,21 @@ void BlockBuffer::ExtractExtendedBlock(float extended_block[PART_LEN2]) { |
// Extract the previous block. |
WebRtc_MoveReadPtr(buffer_, -1); |
- WebRtc_ReadBuffer(buffer_, reinterpret_cast<void**>(&block_ptr), |
- &extended_block[0], 1); |
- if (block_ptr != &extended_block[0]) { |
+ size_t read_elements = WebRtc_ReadBuffer( |
+ buffer_, reinterpret_cast<void**>(&block_ptr), &extended_block[0], 1); |
+ if (read_elements == 0u) { |
+ std::fill_n(&extended_block[0], PART_LEN, 0.0f); |
+ } else if (block_ptr != &extended_block[0]) { |
memcpy(&extended_block[0], block_ptr, PART_LEN * sizeof(float)); |
} |
// Extract the current block. |
- WebRtc_ReadBuffer(buffer_, reinterpret_cast<void**>(&block_ptr), |
- &extended_block[PART_LEN], 1); |
- if (block_ptr != &extended_block[PART_LEN]) { |
+ read_elements = |
+ WebRtc_ReadBuffer(buffer_, reinterpret_cast<void**>(&block_ptr), |
+ &extended_block[PART_LEN], 1); |
+ if (read_elements == 0u) { |
+ std::fill_n(&extended_block[PART_LEN], PART_LEN, 0.0f); |
+ } else if (block_ptr != &extended_block[PART_LEN]) { |
memcpy(&extended_block[PART_LEN], block_ptr, PART_LEN * sizeof(float)); |
} |
} |