From c6280bce51b6f970b7c7a0a342f70586316e2722 Mon Sep 17 00:00:00 2001 From: James Dong Date: Wed, 11 Aug 2010 17:12:39 -0700 Subject: [PATCH] Fix all fd leaks in authoring engine Change-Id: I17798543f9dd41cc8bef6f6086e66932f9f97be8 --- media/libmedia/IMediaRecorder.cpp | 2 ++ media/libmediaplayerservice/StagefrightRecorder.cpp | 10 +++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/media/libmedia/IMediaRecorder.cpp b/media/libmedia/IMediaRecorder.cpp index 4eb63e8c66dad..947ff3409390b 100644 --- a/media/libmedia/IMediaRecorder.cpp +++ b/media/libmedia/IMediaRecorder.cpp @@ -23,6 +23,7 @@ #include #include #include +#include namespace android { @@ -373,6 +374,7 @@ status_t BnMediaRecorder::onTransact( int64_t offset = data.readInt64(); int64_t length = data.readInt64(); reply->writeInt32(setOutputFile(fd, offset, length)); + ::close(fd); return NO_ERROR; } break; case SET_VIDEO_SIZE: { diff --git a/media/libmediaplayerservice/StagefrightRecorder.cpp b/media/libmediaplayerservice/StagefrightRecorder.cpp index f6f89c7a1cad8..8481d4935c4e6 100644 --- a/media/libmediaplayerservice/StagefrightRecorder.cpp +++ b/media/libmediaplayerservice/StagefrightRecorder.cpp @@ -55,11 +55,6 @@ StagefrightRecorder::StagefrightRecorder() StagefrightRecorder::~StagefrightRecorder() { LOGV("Destructor"); stop(); - - if (mOutputFd >= 0) { - ::close(mOutputFd); - mOutputFd = -1; - } } status_t StagefrightRecorder::init() { @@ -1084,6 +1079,11 @@ status_t StagefrightRecorder::stop() { mFlags = 0; } + if (mOutputFd >= 0) { + ::close(mOutputFd); + mOutputFd = -1; + } + return OK; }