Hi.

- MultiFramedRTPSource::networkReadHandler1() gets freePacket when it is 
called. (now fSavedPacketFree==False)
- usually it will call fReorderingBuffer->freePacket(bPacket); either directly 
or indirectly at the end, 
- however if packetReadWasIncomplete function exits earlier. At this point 
fPacketReadInProgress holds the allocated packet, and fSavedPacketFree==False
- if close() is called at this point 
MultiFramedRTPSource::doStopGettingFrames() will call 
ReorderingPacketBuffer::reset(), but since fSavedPacketFree==False, delete 
fSavedPacket won’t happen.

Suggested patch:
@@ -105,6 +105,10 @@
}

void MultiFramedRTPSource::doStopGettingFrames() {
+  if (fPacketReadInProgress != NULL) {
+    fReorderingBuffer->freePacket(fPacketReadInProgress);
+    fPacketReadInProgress = NULL;
+  }
  envir().taskScheduler().unscheduleDelayedTask(nextTask());
  fRTPInterface.stopNetworkReading();
  fReorderingBuffer->reset();

_______________________________________________
live-devel mailing list
live-devel@lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to