diff --git a/README.md b/README.md
index 15d643d28..334308ca7 100755
--- a/README.md
+++ b/README.md
@@ -333,6 +333,7 @@ Remark:
## History
+* v2.0, 2018-07-21, Merge [#1119][bug #1119], fix memory leak. 2.0.249
* v2.0, 2018-07-18, [2.0 release3(2.0.248)][r2.0r3] released. 86775 lines.
* v2.0, 2018-07-17, Merge [#1176][bug #1176], fix scaned issues. 2.0.248
* v2.0, 2018-02-28, Merge [#1077][bug #1077], fix crash for edge HLS. 2.0.247
@@ -1311,6 +1312,7 @@ Winlin
[bug #1059]: https://github.com/ossrs/srs/issues/1059
[bug #1077]: https://github.com/ossrs/srs/issues/1077
[bug #1176]: https://github.com/ossrs/srs/issues/1176
+[bug #1119]: https://github.com/ossrs/srs/issues/1119
[bug #xxxxxxxxxx]: https://github.com/ossrs/srs/issues/xxxxxxxxxx
[exo #828]: https://github.com/google/ExoPlayer/pull/828
diff --git a/trunk/src/core/srs_core.hpp b/trunk/src/core/srs_core.hpp
index ad068719a..2da22b8f7 100644
--- a/trunk/src/core/srs_core.hpp
+++ b/trunk/src/core/srs_core.hpp
@@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// current release version
#define VERSION_MAJOR 2
#define VERSION_MINOR 0
-#define VERSION_REVISION 248
+#define VERSION_REVISION 249
// generated by configure, only macros.
#include
diff --git a/trunk/src/kernel/srs_kernel_ts.cpp b/trunk/src/kernel/srs_kernel_ts.cpp
index fad50ea2b..eebc44a2d 100644
--- a/trunk/src/kernel/srs_kernel_ts.cpp
+++ b/trunk/src/kernel/srs_kernel_ts.cpp
@@ -184,8 +184,11 @@ SrsTsMessage* SrsTsMessage::detach()
cp->sid = sid;
cp->PES_packet_length = PES_packet_length;
cp->continuity_counter = continuity_counter;
+
+ srs_freep(cp->payload);
cp->payload = payload;
payload = NULL;
+
return cp;
}
diff --git a/trunk/src/main/srs_main_ingest_hls.cpp b/trunk/src/main/srs_main_ingest_hls.cpp
index 7480fb0db..5b2435c95 100644
--- a/trunk/src/main/srs_main_ingest_hls.cpp
+++ b/trunk/src/main/srs_main_ingest_hls.cpp
@@ -898,10 +898,12 @@ int SrsIngestSrsOutput::parse_message_queue()
std::multimap::iterator it = queue.begin();
SrsTsMessage* msg = it->second;
+ SrsAutoFree(SrsTsMessage, msg);
+ queue.erase(it);
+
if (msg->channel->stream == SrsTsStreamVideoH264) {
nb_videos--;
}
- queue.erase(it);
// parse the stream.
SrsStream avs;
@@ -935,6 +937,7 @@ int SrsIngestSrsOutput::flush_message_queue()
std::multimap::iterator it = queue.begin();
SrsTsMessage* msg = it->second;
+ SrsAutoFree(SrsTsMessage, msg);
queue.erase(it);
// parse the stream.