GenericSource: close unused file descriptor
Test: dumpsys media.player with photos, ringtone
Bug: 37792834
Change-Id: I04e0f05ea642e3bfe5e6af12bfabea69838716b4
diff --git a/media/libmediaplayerservice/nuplayer/GenericSource.cpp b/media/libmediaplayerservice/nuplayer/GenericSource.cpp
index fb1f42b..22b09d4 100644
--- a/media/libmediaplayerservice/nuplayer/GenericSource.cpp
+++ b/media/libmediaplayerservice/nuplayer/GenericSource.cpp
@@ -379,6 +379,11 @@
source.get(), mFd, (long long)mOffset, (long long)mLength);
if (source.get() != nullptr) {
mDataSource = DataSource::CreateFromIDataSource(source);
+ if (mDataSource != nullptr) {
+ // Close the local file descriptor as it is not needed anymore.
+ close(mFd);
+ mFd = -1;
+ }
} else {
ALOGW("extractor service cannot make data source");
}
@@ -390,7 +395,9 @@
ALOGD("FileSource local");
mDataSource = new FileSource(mFd, mOffset, mLength);
}
-
+ // TODO: close should always be done on mFd, see the lines following
+ // DataSource::CreateFromIDataSource above,
+ // and the FileSource constructor should dup the mFd argument as needed.
mFd = -1;
}