audioflinger: Fix crash on patch creation attempt

The code for clearing software patch connections was missing
a check for a null track pointer.

Bug: 126789266
Bug: 128269566
Test: see repro steps in b/128269566
Change-Id: Ice6887622d5fa2fa3198ce15146bff3cb05f7451
gugelfrei
Mikhail Naganov 5 years ago
parent 0428b8e5a5
commit d3f301ccb9

@ -543,7 +543,7 @@ void AudioFlinger::PatchPanel::Patch::clearConnections(PatchPanel *panel)
__func__, mRecord.handle(), mPlayback.handle());
mRecord.stopTrack();
mPlayback.stopTrack();
mRecord.track()->clearPeerProxy(); // mRecord stop is synchronous. Break PeerProxy sp<> cycle.
mRecord.clearTrackPeer(); // mRecord stop is synchronous. Break PeerProxy sp<> cycle.
mRecord.closeConnections(panel);
mPlayback.closeConnections(panel);
}

@ -128,6 +128,7 @@ private:
mThread->addPatchTrack(mTrack);
mTrack->setPeerProxy(peer, true /* holdReference */);
}
void clearTrackPeer() { if (mTrack) mTrack->clearPeerProxy(); }
void stopTrack() { if (mTrack) mTrack->stop(); }
void swap(Endpoint &other) noexcept {

Loading…
Cancel
Save