From afc0a87cc92a474bb14fb2a4093c74d04e4efd1b Mon Sep 17 00:00:00 2001 From: Chong Zhang Date: Tue, 26 Aug 2014 09:56:52 -0700 Subject: [PATCH] do string compare with mime immediately after we get the value Bug: 17210803 Change-Id: I4d20dd4b95d18251c18a371bd8f89b1320b38879 --- media/libmediaplayerservice/nuplayer/GenericSource.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/media/libmediaplayerservice/nuplayer/GenericSource.cpp b/media/libmediaplayerservice/nuplayer/GenericSource.cpp index 76e1d549a0..5a4d131967 100644 --- a/media/libmediaplayerservice/nuplayer/GenericSource.cpp +++ b/media/libmediaplayerservice/nuplayer/GenericSource.cpp @@ -134,13 +134,17 @@ status_t NuPlayer::GenericSource::initFromDataSource( } for (size_t i = 0; i < extractor->countTracks(); ++i) { + sp track = extractor->getTrack(i); + sp meta = extractor->getTrackMetaData(i); const char *mime; CHECK(meta->findCString(kKeyMIMEType, &mime)); - sp track = extractor->getTrack(i); - + // Do the string compare immediately with "mime", + // we can't assume "mime" would stay valid after another + // extractor operation, some extractors might modify meta + // during getTrack() and make it invalid. if (!strncasecmp(mime, "audio/", 6)) { if (mAudioTrack.mSource == NULL) { mAudioTrack.mIndex = i; -- 2.11.0