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
diff --git a/tv/tuner/aidl/default/Filter.cpp b/tv/tuner/aidl/default/Filter.cpp
index 212d329..5f7a4cd 100644
--- a/tv/tuner/aidl/default/Filter.cpp
+++ b/tv/tuner/aidl/default/Filter.cpp
@@ -366,9 +366,11 @@
::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;