From cf14e8ca5beef8a389896353d159d2848072e62d Mon Sep 17 00:00:00 2001 From: sadiqsada Date: Wed, 17 Jan 2024 10:06:28 -0800 Subject: [PATCH] mFilterCount cannot be negative mFilterCount is a reference counter for Filters, and it's decremented when Filter.stop() is called. Added a check to make sure the value is not decremented when it's already 0. Bug: 288170590 Test: atest VtsHalTvTunerTargetTest Change-Id: I72fe7e5c4babd7e7426d8a52b40887a8c411ce81 --- tv/tuner/aidl/default/Filter.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tv/tuner/aidl/default/Filter.cpp b/tv/tuner/aidl/default/Filter.cpp index 212d329cdc..5f7a4cda8d 100644 --- a/tv/tuner/aidl/default/Filter.cpp +++ b/tv/tuner/aidl/default/Filter.cpp @@ -366,9 +366,11 @@ Filter::~Filter() { ::ndk::ScopedAStatus Filter::stop() { ALOGV("%s", __FUNCTION__); - mFilterCount -= 1; - if (mFilterCount == 0) { - mDemux->setIptvThreadRunning(false); + if (mFilterCount > 0) { + mFilterCount -= 1; + if (mFilterCount.load() == 0) { + mDemux->setIptvThreadRunning(false); + } } mFilterThreadRunning = false;