diff options
Diffstat (limited to 'services/audioflinger/Threads.cpp')
-rw-r--r-- | services/audioflinger/Threads.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp index 498ddb6..f0f5a4d 100644 --- a/services/audioflinger/Threads.cpp +++ b/services/audioflinger/Threads.cpp @@ -1324,8 +1324,10 @@ sp<AudioFlinger::PlaybackThread::Track> AudioFlinger::PlaybackThread::createTrac track = TimedTrack::create(this, client, streamType, sampleRate, format, channelMask, frameCount, sharedBuffer, sessionId, uid); } + if (track == 0 || track->getCblk() == NULL || track->name() < 0) { lStatus = NO_MEMORY; + // track must be cleared from the caller as the caller has the AF lock goto Exit; } @@ -4741,7 +4743,7 @@ sp<AudioFlinger::RecordThread::RecordTrack> AudioFlinger::RecordThread::createR if (track->getCblk() == 0) { ALOGE("createRecordTrack_l() no control block"); lStatus = NO_MEMORY; - track.clear(); + // track must be cleared from the caller as the caller has the AF lock goto Exit; } mTracks.add(track); |