OSDN Git Service

A reference to the psi section data could become invalid if more
authorAndreas Huber <andih@google.com>
Mon, 29 Apr 2013 20:17:50 +0000 (13:17 -0700)
committerAndreas Huber <andih@google.com>
Thu, 2 May 2013 21:23:55 +0000 (14:23 -0700)
sections were added to the KeyedVector.

Change-Id: I095b5452ccfad89d69fc502fb21ce39495e201c3
related-to-bug: 8754565

media/libstagefright/mpeg2ts/ATSParser.cpp

index c12572f..9850a46 100644 (file)
@@ -1059,7 +1059,7 @@ status_t ATSParser::parsePID(
     ssize_t sectionIndex = mPSISections.indexOfKey(PID);
 
     if (sectionIndex >= 0) {
-        const sp<PSISection> &section = mPSISections.valueAt(sectionIndex);
+        sp<PSISection> section = mPSISections.valueAt(sectionIndex);
 
         if (payload_unit_start_indicator) {
             CHECK(section->isEmpty());
@@ -1068,7 +1068,6 @@ status_t ATSParser::parsePID(
             br->skipBits(skip * 8);
         }
 
-
         CHECK((br->numBitsLeft() % 8) == 0);
         status_t err = section->append(br->data(), br->numBitsLeft() / 8);
 
@@ -1103,10 +1102,13 @@ status_t ATSParser::parsePID(
 
             if (!handled) {
                 mPSISections.removeItem(PID);
+                section.clear();
             }
         }
 
-        section->clear();
+        if (section != NULL) {
+            section->clear();
+        }
 
         return OK;
     }