From 67fb919b5e2b64b353685691210b70543b226d86 Mon Sep 17 00:00:00 2001 From: Ivo Creusen Date: Tue, 16 Apr 2019 14:25:26 +0200 Subject: [PATCH] Handle event log parsing errors without crashing. Instead of crashing when encountering an event log that cannot be parsed it is better to print an error message, skip the file and continue. Bug: webrtc:10337 Change-Id: I5dbca18e456c14e5a92af068f82e88cb17e8de9c Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133185 Reviewed-by: Minyue Li Commit-Queue: Ivo Creusen Cr-Commit-Position: refs/heads/master@{#27727} --- .../neteq/tools/neteq_event_log_input.cc | 16 ++++++++++++---- .../neteq/tools/rtc_event_log_source.cc | 14 ++++++++++---- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/modules/audio_coding/neteq/tools/neteq_event_log_input.cc b/modules/audio_coding/neteq/tools/neteq_event_log_input.cc index 60fd897dfb..c1ef1ccc14 100644 --- a/modules/audio_coding/neteq/tools/neteq_event_log_input.cc +++ b/modules/audio_coding/neteq/tools/neteq_event_log_input.cc @@ -22,15 +22,23 @@ namespace test { NetEqEventLogInput* NetEqEventLogInput::CreateFromFile( const std::string& file_name, absl::optional ssrc_filter) { - return new NetEqEventLogInput( - RtcEventLogSource::CreateFromFile(file_name, ssrc_filter)); + auto event_log_src = + RtcEventLogSource::CreateFromFile(file_name, ssrc_filter); + if (!event_log_src) { + return nullptr; + } + return new NetEqEventLogInput(std::move(event_log_src)); } NetEqEventLogInput* NetEqEventLogInput::CreateFromString( const std::string& file_contents, absl::optional ssrc_filter) { - return new NetEqEventLogInput( - RtcEventLogSource::CreateFromString(file_contents, ssrc_filter)); + auto event_log_src = + RtcEventLogSource::CreateFromString(file_contents, ssrc_filter); + if (!event_log_src) { + return nullptr; + } + return new NetEqEventLogInput(std::move(event_log_src)); } absl::optional NetEqEventLogInput::NextOutputEventTime() const { diff --git a/modules/audio_coding/neteq/tools/rtc_event_log_source.cc b/modules/audio_coding/neteq/tools/rtc_event_log_source.cc index fa9f2d955c..f0cc0a3dfc 100644 --- a/modules/audio_coding/neteq/tools/rtc_event_log_source.cc +++ b/modules/audio_coding/neteq/tools/rtc_event_log_source.cc @@ -41,8 +41,11 @@ std::unique_ptr RtcEventLogSource::CreateFromFile( absl::optional ssrc_filter) { auto source = std::unique_ptr(new RtcEventLogSource()); ParsedRtcEventLog parsed_log; - RTC_CHECK(parsed_log.ParseFile(file_name)); - RTC_CHECK(source->Initialize(parsed_log, ssrc_filter)); + if (!parsed_log.ParseFile(file_name) || + !source->Initialize(parsed_log, ssrc_filter)) { + std::cerr << "Error while parsing event log, skipping." << std::endl; + return nullptr; + } return source; } @@ -51,8 +54,11 @@ std::unique_ptr RtcEventLogSource::CreateFromString( absl::optional ssrc_filter) { auto source = std::unique_ptr(new RtcEventLogSource()); ParsedRtcEventLog parsed_log; - RTC_CHECK(parsed_log.ParseString(file_contents)); - RTC_CHECK(source->Initialize(parsed_log, ssrc_filter)); + if (!parsed_log.ParseString(file_contents) || + !source->Initialize(parsed_log, ssrc_filter)) { + std::cerr << "Error while parsing event log, skipping." << std::endl; + return nullptr; + } return source; }