winlin

merge srs2, use srs_freepa for array

@@ -207,7 +207,7 @@ int SrsDynamicHttpConn::do_proxy(ISrsHttpResponseReader* rr, SrsFlvDecoder* dec) @@ -207,7 +207,7 @@ int SrsDynamicHttpConn::do_proxy(ISrsHttpResponseReader* rr, SrsFlvDecoder* dec)
207 207
208 char* data = new char[size]; 208 char* data = new char[size];
209 if ((ret = dec->read_tag_data(data, size)) != ERROR_SUCCESS) { 209 if ((ret = dec->read_tag_data(data, size)) != ERROR_SUCCESS) {
210 - srs_freep(data); 210 + srs_freepa(data);
211 if (!srs_is_client_gracefully_close(ret)) { 211 if (!srs_is_client_gracefully_close(ret)) {
212 srs_error("flv: proxy tag data failed. ret=%d", ret); 212 srs_error("flv: proxy tag data failed. ret=%d", ret);
213 } 213 }
@@ -127,7 +127,7 @@ namespace _srs_internal @@ -127,7 +127,7 @@ namespace _srs_internal
127 127
128 SrsConfigBuffer::~SrsConfigBuffer() 128 SrsConfigBuffer::~SrsConfigBuffer()
129 { 129 {
130 - srs_freep(start); 130 + srs_freepa(start);
131 } 131 }
132 132
133 int SrsConfigBuffer::fullfill(const char* filename) 133 int SrsConfigBuffer::fullfill(const char* filename)
@@ -146,7 +146,7 @@ namespace _srs_internal @@ -146,7 +146,7 @@ namespace _srs_internal
146 int filesize = (int)reader.filesize(); 146 int filesize = (int)reader.filesize();
147 147
148 // create buffer 148 // create buffer
149 - srs_freep(start); 149 + srs_freepa(start);
150 pos = last = start = new char[filesize]; 150 pos = last = start = new char[filesize];
151 end = start + filesize; 151 end = start + filesize;
152 152
@@ -1091,7 +1091,7 @@ int SrsConfDirective::read_token(SrsConfigBuffer* buffer, vector<string>& args, @@ -1091,7 +1091,7 @@ int SrsConfDirective::read_token(SrsConfigBuffer* buffer, vector<string>& args,
1091 if (!word_str.empty()) { 1091 if (!word_str.empty()) {
1092 args.push_back(word_str); 1092 args.push_back(word_str);
1093 } 1093 }
1094 - srs_freep(aword); 1094 + srs_freepa(aword);
1095 1095
1096 if (ch == ';') { 1096 if (ch == ';') {
1097 return ERROR_SYSTEM_CONFIG_DIRECTIVE; 1097 return ERROR_SYSTEM_CONFIG_DIRECTIVE;
@@ -6833,4 +6833,3 @@ SrsConfDirective* SrsConfig::get_stats_disk_device() @@ -6833,4 +6833,3 @@ SrsConfDirective* SrsConfig::get_stats_disk_device()
6833 6833
6834 return conf; 6834 return conf;
6835 } 6835 }
6836 -  
@@ -79,7 +79,7 @@ SrsHttpResponseWriter::SrsHttpResponseWriter(SrsStSocket* io) @@ -79,7 +79,7 @@ SrsHttpResponseWriter::SrsHttpResponseWriter(SrsStSocket* io)
79 SrsHttpResponseWriter::~SrsHttpResponseWriter() 79 SrsHttpResponseWriter::~SrsHttpResponseWriter()
80 { 80 {
81 srs_freep(hdr); 81 srs_freep(hdr);
82 - srs_freep(iovss_cache); 82 + srs_freepa(iovss_cache);
83 } 83 }
84 84
85 int SrsHttpResponseWriter::final_request() 85 int SrsHttpResponseWriter::final_request()
@@ -191,7 +191,7 @@ int SrsHttpResponseWriter::writev(iovec* iov, int iovcnt, ssize_t* pnwrite) @@ -191,7 +191,7 @@ int SrsHttpResponseWriter::writev(iovec* iov, int iovcnt, ssize_t* pnwrite)
191 int nb_iovss = 3 + iovcnt; 191 int nb_iovss = 3 + iovcnt;
192 iovec* iovss = iovss_cache; 192 iovec* iovss = iovss_cache;
193 if (nb_iovss_cache < nb_iovss) { 193 if (nb_iovss_cache < nb_iovss) {
194 - srs_freep(iovss_cache); 194 + srs_freepa(iovss_cache);
195 nb_iovss_cache = nb_iovss; 195 nb_iovss_cache = nb_iovss;
196 iovss = iovss_cache = new iovec[nb_iovss]; 196 iovss = iovss_cache = new iovec[nb_iovss];
197 } 197 }
@@ -509,7 +509,7 @@ SrsHttpMessage::~SrsHttpMessage() @@ -509,7 +509,7 @@ SrsHttpMessage::~SrsHttpMessage()
509 { 509 {
510 srs_freep(_body); 510 srs_freep(_body);
511 srs_freep(_uri); 511 srs_freep(_uri);
512 - srs_freep(_http_ts_send_buffer); 512 + srs_freepa(_http_ts_send_buffer);
513 } 513 }
514 514
515 int SrsHttpMessage::update(string url, bool allow_jsonp, http_parser* header, SrsFastStream* body, vector<SrsHttpHeaderField>& headers) 515 int SrsHttpMessage::update(string url, bool allow_jsonp, http_parser* header, SrsFastStream* body, vector<SrsHttpHeaderField>& headers)
@@ -94,7 +94,7 @@ SrsUdpListener::~SrsUdpListener() @@ -94,7 +94,7 @@ SrsUdpListener::~SrsUdpListener()
94 // close it manually. 94 // close it manually.
95 close(_fd); 95 close(_fd);
96 96
97 - srs_freep(buf); 97 + srs_freepa(buf);
98 } 98 }
99 99
100 int SrsUdpListener::fd() 100 int SrsUdpListener::fd()
@@ -91,7 +91,7 @@ SrsFastLog::SrsFastLog() @@ -91,7 +91,7 @@ SrsFastLog::SrsFastLog()
91 91
92 SrsFastLog::~SrsFastLog() 92 SrsFastLog::~SrsFastLog()
93 { 93 {
94 - srs_freep(log_data); 94 + srs_freepa(log_data);
95 95
96 if (fd > 0) { 96 if (fd > 0) {
97 ::close(fd); 97 ::close(fd);
@@ -162,7 +162,7 @@ SrsFastVector::SrsFastVector() @@ -162,7 +162,7 @@ SrsFastVector::SrsFastVector()
162 SrsFastVector::~SrsFastVector() 162 SrsFastVector::~SrsFastVector()
163 { 163 {
164 free(); 164 free();
165 - srs_freep(msgs); 165 + srs_freepa(msgs);
166 } 166 }
167 167
168 int SrsFastVector::size() 168 int SrsFastVector::size()
@@ -221,7 +221,7 @@ void SrsFastVector::push_back(SrsSharedPtrMessage* msg) @@ -221,7 +221,7 @@ void SrsFastVector::push_back(SrsSharedPtrMessage* msg)
221 srs_warn("fast vector incrase %d=>%d", nb_msgs, size); 221 srs_warn("fast vector incrase %d=>%d", nb_msgs, size);
222 222
223 // use new array. 223 // use new array.
224 - srs_freep(msgs); 224 + srs_freepa(msgs);
225 msgs = buf; 225 msgs = buf;
226 nb_msgs = size; 226 nb_msgs = size;
227 } 227 }
@@ -103,9 +103,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -103,9 +103,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
103 p = NULL; \ 103 p = NULL; \
104 } \ 104 } \
105 (void)0 105 (void)0
106 -// sometimes, the freepa is useless,  
107 -// it's recomments to free each elem explicit.  
108 -// so we remove the srs_freepa utility. 106 +// please use the freepa(T[]) to free an array,
  107 +// or the behavior is undefined.
  108 +#define srs_freepa(pa) \
  109 + if (pa) { \
  110 + delete[] pa; \
  111 + pa = NULL; \
  112 + } \
  113 + (void)0
109 114
110 /** 115 /**
111 * disable copy constructor of class, 116 * disable copy constructor of class,
@@ -419,12 +419,12 @@ SrsAvcAacCodec::SrsAvcAacCodec() @@ -419,12 +419,12 @@ SrsAvcAacCodec::SrsAvcAacCodec()
419 419
420 SrsAvcAacCodec::~SrsAvcAacCodec() 420 SrsAvcAacCodec::~SrsAvcAacCodec()
421 { 421 {
422 - srs_freep(avc_extra_data);  
423 - srs_freep(aac_extra_data); 422 + srs_freepa(avc_extra_data);
  423 + srs_freepa(aac_extra_data);
424 424
425 srs_freep(stream); 425 srs_freep(stream);
426 - srs_freep(sequenceParameterSetNALUnit);  
427 - srs_freep(pictureParameterSetNALUnit); 426 + srs_freepa(sequenceParameterSetNALUnit);
  427 + srs_freepa(pictureParameterSetNALUnit);
428 } 428 }
429 429
430 bool SrsAvcAacCodec::is_avc_codec_ok() 430 bool SrsAvcAacCodec::is_avc_codec_ok()
@@ -500,7 +500,7 @@ int SrsAvcAacCodec::audio_aac_demux(char* data, int size, SrsCodecSample* sample @@ -500,7 +500,7 @@ int SrsAvcAacCodec::audio_aac_demux(char* data, int size, SrsCodecSample* sample
500 // 1.6.2.1 AudioSpecificConfig, in aac-mp4a-format-ISO_IEC_14496-3+2001.pdf, page 33. 500 // 1.6.2.1 AudioSpecificConfig, in aac-mp4a-format-ISO_IEC_14496-3+2001.pdf, page 33.
501 aac_extra_size = stream->size() - stream->pos(); 501 aac_extra_size = stream->size() - stream->pos();
502 if (aac_extra_size > 0) { 502 if (aac_extra_size > 0) {
503 - srs_freep(aac_extra_data); 503 + srs_freepa(aac_extra_data);
504 aac_extra_data = new char[aac_extra_size]; 504 aac_extra_data = new char[aac_extra_size];
505 memcpy(aac_extra_data, stream->data() + stream->pos(), aac_extra_size); 505 memcpy(aac_extra_data, stream->data() + stream->pos(), aac_extra_size);
506 506
@@ -764,7 +764,7 @@ int SrsAvcAacCodec::avc_demux_sps_pps(SrsBuffer* stream) @@ -764,7 +764,7 @@ int SrsAvcAacCodec::avc_demux_sps_pps(SrsBuffer* stream)
764 // 5.2.4.1.1 Syntax, H.264-AVC-ISO_IEC_14496-15.pdf, page 16 764 // 5.2.4.1.1 Syntax, H.264-AVC-ISO_IEC_14496-15.pdf, page 16
765 avc_extra_size = stream->size() - stream->pos(); 765 avc_extra_size = stream->size() - stream->pos();
766 if (avc_extra_size > 0) { 766 if (avc_extra_size > 0) {
767 - srs_freep(avc_extra_data); 767 + srs_freepa(avc_extra_data);
768 avc_extra_data = new char[avc_extra_size]; 768 avc_extra_data = new char[avc_extra_size];
769 memcpy(avc_extra_data, stream->data() + stream->pos(), avc_extra_size); 769 memcpy(avc_extra_data, stream->data() + stream->pos(), avc_extra_size);
770 } 770 }
@@ -825,7 +825,7 @@ int SrsAvcAacCodec::avc_demux_sps_pps(SrsBuffer* stream) @@ -825,7 +825,7 @@ int SrsAvcAacCodec::avc_demux_sps_pps(SrsBuffer* stream)
825 return ret; 825 return ret;
826 } 826 }
827 if (sequenceParameterSetLength > 0) { 827 if (sequenceParameterSetLength > 0) {
828 - srs_freep(sequenceParameterSetNALUnit); 828 + srs_freepa(sequenceParameterSetNALUnit);
829 sequenceParameterSetNALUnit = new char[sequenceParameterSetLength]; 829 sequenceParameterSetNALUnit = new char[sequenceParameterSetLength];
830 stream->read_bytes(sequenceParameterSetNALUnit, sequenceParameterSetLength); 830 stream->read_bytes(sequenceParameterSetNALUnit, sequenceParameterSetLength);
831 } 831 }
@@ -854,7 +854,7 @@ int SrsAvcAacCodec::avc_demux_sps_pps(SrsBuffer* stream) @@ -854,7 +854,7 @@ int SrsAvcAacCodec::avc_demux_sps_pps(SrsBuffer* stream)
854 return ret; 854 return ret;
855 } 855 }
856 if (pictureParameterSetLength > 0) { 856 if (pictureParameterSetLength > 0) {
857 - srs_freep(pictureParameterSetNALUnit); 857 + srs_freepa(pictureParameterSetNALUnit);
858 pictureParameterSetNALUnit = new char[pictureParameterSetLength]; 858 pictureParameterSetNALUnit = new char[pictureParameterSetLength];
859 stream->read_bytes(pictureParameterSetNALUnit, pictureParameterSetLength); 859 stream->read_bytes(pictureParameterSetNALUnit, pictureParameterSetLength);
860 } 860 }
@@ -163,12 +163,12 @@ SrsCommonMessage::~SrsCommonMessage() @@ -163,12 +163,12 @@ SrsCommonMessage::~SrsCommonMessage()
163 #ifdef SRS_AUTO_MEM_WATCH 163 #ifdef SRS_AUTO_MEM_WATCH
164 srs_memory_unwatch(payload); 164 srs_memory_unwatch(payload);
165 #endif 165 #endif
166 - srs_freep(payload); 166 + srs_freepa(payload);
167 } 167 }
168 168
169 void SrsCommonMessage::create_payload(int size) 169 void SrsCommonMessage::create_payload(int size)
170 { 170 {
171 - srs_freep(payload); 171 + srs_freepa(payload);
172 172
173 payload = new char[size]; 173 payload = new char[size];
174 srs_verbose("create payload for RTMP message. size=%d", size); 174 srs_verbose("create payload for RTMP message. size=%d", size);
@@ -190,7 +190,7 @@ SrsSharedPtrMessage::SrsSharedPtrPayload::~SrsSharedPtrPayload() @@ -190,7 +190,7 @@ SrsSharedPtrMessage::SrsSharedPtrPayload::~SrsSharedPtrPayload()
190 #ifdef SRS_AUTO_MEM_WATCH 190 #ifdef SRS_AUTO_MEM_WATCH
191 srs_memory_unwatch(payload); 191 srs_memory_unwatch(payload);
192 #endif 192 #endif
193 - srs_freep(payload); 193 + srs_freepa(payload);
194 } 194 }
195 195
196 SrsSharedPtrMessage::SrsSharedPtrMessage() 196 SrsSharedPtrMessage::SrsSharedPtrMessage()
@@ -350,9 +350,9 @@ SrsFlvEncoder::~SrsFlvEncoder() @@ -350,9 +350,9 @@ SrsFlvEncoder::~SrsFlvEncoder()
350 srs_freep(tag_stream); 350 srs_freep(tag_stream);
351 351
352 #ifdef SRS_PERF_FAST_FLV_ENCODER 352 #ifdef SRS_PERF_FAST_FLV_ENCODER
353 - srs_freep(tag_headers);  
354 - srs_freep(iovss_cache);  
355 - srs_freep(ppts); 353 + srs_freepa(tag_headers);
  354 + srs_freepa(iovss_cache);
  355 + srs_freepa(ppts);
356 #endif 356 #endif
357 } 357 }
358 358
@@ -489,7 +489,7 @@ int SrsFlvEncoder::write_tags(SrsSharedPtrMessage** msgs, int count) @@ -489,7 +489,7 @@ int SrsFlvEncoder::write_tags(SrsSharedPtrMessage** msgs, int count)
489 int nb_iovss = 3 * count; 489 int nb_iovss = 3 * count;
490 iovec* iovss = iovss_cache; 490 iovec* iovss = iovss_cache;
491 if (nb_iovss_cache < nb_iovss) { 491 if (nb_iovss_cache < nb_iovss) {
492 - srs_freep(iovss_cache); 492 + srs_freepa(iovss_cache);
493 493
494 nb_iovss_cache = nb_iovss; 494 nb_iovss_cache = nb_iovss;
495 iovss = iovss_cache = new iovec[nb_iovss]; 495 iovss = iovss_cache = new iovec[nb_iovss];
@@ -498,7 +498,7 @@ int SrsFlvEncoder::write_tags(SrsSharedPtrMessage** msgs, int count) @@ -498,7 +498,7 @@ int SrsFlvEncoder::write_tags(SrsSharedPtrMessage** msgs, int count)
498 // realloc the tag headers. 498 // realloc the tag headers.
499 char* cache = tag_headers; 499 char* cache = tag_headers;
500 if (nb_tag_headers < count) { 500 if (nb_tag_headers < count) {
501 - srs_freep(tag_headers); 501 + srs_freepa(tag_headers);
502 502
503 nb_tag_headers = count; 503 nb_tag_headers = count;
504 cache = tag_headers = new char[SRS_FLV_TAG_HEADER_SIZE * count]; 504 cache = tag_headers = new char[SRS_FLV_TAG_HEADER_SIZE * count];
@@ -507,7 +507,7 @@ int SrsFlvEncoder::write_tags(SrsSharedPtrMessage** msgs, int count) @@ -507,7 +507,7 @@ int SrsFlvEncoder::write_tags(SrsSharedPtrMessage** msgs, int count)
507 // realloc the pts. 507 // realloc the pts.
508 char* pts = ppts; 508 char* pts = ppts;
509 if (nb_ppts < count) { 509 if (nb_ppts < count) {
510 - srs_freep(ppts); 510 + srs_freepa(ppts);
511 511
512 nb_ppts = count; 512 nb_ppts = count;
513 pts = ppts = new char[SRS_FLV_PREVIOUS_TAG_SIZE * count]; 513 pts = ppts = new char[SRS_FLV_PREVIOUS_TAG_SIZE * count];
@@ -927,7 +927,7 @@ SrsTsAdaptationField::SrsTsAdaptationField(SrsTsPacket* pkt) @@ -927,7 +927,7 @@ SrsTsAdaptationField::SrsTsAdaptationField(SrsTsPacket* pkt)
927 927
928 SrsTsAdaptationField::~SrsTsAdaptationField() 928 SrsTsAdaptationField::~SrsTsAdaptationField()
929 { 929 {
930 - srs_freep(transport_private_data); 930 + srs_freepa(transport_private_data);
931 } 931 }
932 932
933 int SrsTsAdaptationField::decode(SrsBuffer* stream) 933 int SrsTsAdaptationField::decode(SrsBuffer* stream)
@@ -1052,7 +1052,7 @@ int SrsTsAdaptationField::decode(SrsBuffer* stream) @@ -1052,7 +1052,7 @@ int SrsTsAdaptationField::decode(SrsBuffer* stream)
1052 srs_error("ts: demux af transport_private_data_flag failed. ret=%d", ret); 1052 srs_error("ts: demux af transport_private_data_flag failed. ret=%d", ret);
1053 return ret; 1053 return ret;
1054 } 1054 }
1055 - srs_freep(transport_private_data); 1055 + srs_freepa(transport_private_data);
1056 transport_private_data = new char[transport_private_data_length]; 1056 transport_private_data = new char[transport_private_data_length];
1057 stream->read_bytes(transport_private_data, transport_private_data_length); 1057 stream->read_bytes(transport_private_data, transport_private_data_length);
1058 } 1058 }
@@ -1337,9 +1337,9 @@ SrsTsPayloadPES::SrsTsPayloadPES(SrsTsPacket* p) : SrsTsPayload(p) @@ -1337,9 +1337,9 @@ SrsTsPayloadPES::SrsTsPayloadPES(SrsTsPacket* p) : SrsTsPayload(p)
1337 1337
1338 SrsTsPayloadPES::~SrsTsPayloadPES() 1338 SrsTsPayloadPES::~SrsTsPayloadPES()
1339 { 1339 {
1340 - srs_freep(PES_private_data);  
1341 - srs_freep(pack_field);  
1342 - srs_freep(PES_extension_field); 1340 + srs_freepa(PES_private_data);
  1341 + srs_freepa(pack_field);
  1342 + srs_freepa(PES_extension_field);
1343 } 1343 }
1344 1344
1345 int SrsTsPayloadPES::decode(SrsBuffer* stream, SrsTsMessage** ppmsg) 1345 int SrsTsPayloadPES::decode(SrsBuffer* stream, SrsTsMessage** ppmsg)
@@ -1616,7 +1616,7 @@ int SrsTsPayloadPES::decode(SrsBuffer* stream, SrsTsMessage** ppmsg) @@ -1616,7 +1616,7 @@ int SrsTsPayloadPES::decode(SrsBuffer* stream, SrsTsMessage** ppmsg)
1616 1616
1617 // 16B 1617 // 16B
1618 if (PES_private_data_flag) { 1618 if (PES_private_data_flag) {
1619 - srs_freep(PES_private_data); 1619 + srs_freepa(PES_private_data);
1620 PES_private_data = new char[16]; 1620 PES_private_data = new char[16];
1621 stream->read_bytes(PES_private_data, 16); 1621 stream->read_bytes(PES_private_data, 16);
1622 } 1622 }
@@ -1632,7 +1632,7 @@ int SrsTsPayloadPES::decode(SrsBuffer* stream, SrsTsMessage** ppmsg) @@ -1632,7 +1632,7 @@ int SrsTsPayloadPES::decode(SrsBuffer* stream, SrsTsMessage** ppmsg)
1632 srs_error("ts: demux PSE ext pack failed. ret=%d", ret); 1632 srs_error("ts: demux PSE ext pack failed. ret=%d", ret);
1633 return ret; 1633 return ret;
1634 } 1634 }
1635 - srs_freep(pack_field); 1635 + srs_freepa(pack_field);
1636 pack_field = new char[pack_field_length]; 1636 pack_field = new char[pack_field_length];
1637 stream->read_bytes(pack_field, pack_field_length); 1637 stream->read_bytes(pack_field, pack_field_length);
1638 } 1638 }
@@ -1670,7 +1670,7 @@ int SrsTsPayloadPES::decode(SrsBuffer* stream, SrsTsMessage** ppmsg) @@ -1670,7 +1670,7 @@ int SrsTsPayloadPES::decode(SrsBuffer* stream, SrsTsMessage** ppmsg)
1670 srs_error("ts: demux PSE ext field failed. ret=%d", ret); 1670 srs_error("ts: demux PSE ext field failed. ret=%d", ret);
1671 return ret; 1671 return ret;
1672 } 1672 }
1673 - srs_freep(PES_extension_field); 1673 + srs_freepa(PES_extension_field);
1674 PES_extension_field = new char[PES_extension_field_length]; 1674 PES_extension_field = new char[PES_extension_field_length];
1675 stream->read_bytes(PES_extension_field, PES_extension_field_length); 1675 stream->read_bytes(PES_extension_field, PES_extension_field_length);
1676 } 1676 }
@@ -2433,7 +2433,7 @@ SrsTsPayloadPMTESInfo::SrsTsPayloadPMTESInfo(SrsTsStream st, int16_t epid) @@ -2433,7 +2433,7 @@ SrsTsPayloadPMTESInfo::SrsTsPayloadPMTESInfo(SrsTsStream st, int16_t epid)
2433 2433
2434 SrsTsPayloadPMTESInfo::~SrsTsPayloadPMTESInfo() 2434 SrsTsPayloadPMTESInfo::~SrsTsPayloadPMTESInfo()
2435 { 2435 {
2436 - srs_freep(ES_info); 2436 + srs_freepa(ES_info);
2437 } 2437 }
2438 2438
2439 int SrsTsPayloadPMTESInfo::decode(SrsBuffer* stream) 2439 int SrsTsPayloadPMTESInfo::decode(SrsBuffer* stream)
@@ -2463,7 +2463,7 @@ int SrsTsPayloadPMTESInfo::decode(SrsBuffer* stream) @@ -2463,7 +2463,7 @@ int SrsTsPayloadPMTESInfo::decode(SrsBuffer* stream)
2463 srs_error("ts: demux PMT es info data failed. ret=%d", ret); 2463 srs_error("ts: demux PMT es info data failed. ret=%d", ret);
2464 return ret; 2464 return ret;
2465 } 2465 }
2466 - srs_freep(ES_info); 2466 + srs_freepa(ES_info);
2467 ES_info = new char[ES_info_length]; 2467 ES_info = new char[ES_info_length];
2468 stream->read_bytes(ES_info, ES_info_length); 2468 stream->read_bytes(ES_info, ES_info_length);
2469 } 2469 }
@@ -2520,7 +2520,7 @@ SrsTsPayloadPMT::SrsTsPayloadPMT(SrsTsPacket* p) : SrsTsPayloadPSI(p) @@ -2520,7 +2520,7 @@ SrsTsPayloadPMT::SrsTsPayloadPMT(SrsTsPacket* p) : SrsTsPayloadPSI(p)
2520 2520
2521 SrsTsPayloadPMT::~SrsTsPayloadPMT() 2521 SrsTsPayloadPMT::~SrsTsPayloadPMT()
2522 { 2522 {
2523 - srs_freep(program_info_desc); 2523 + srs_freepa(program_info_desc);
2524 2524
2525 std::vector<SrsTsPayloadPMTESInfo*>::iterator it; 2525 std::vector<SrsTsPayloadPMTESInfo*>::iterator it;
2526 for (it = infos.begin(); it != infos.end(); ++it) { 2526 for (it = infos.begin(); it != infos.end(); ++it) {
@@ -2574,7 +2574,7 @@ int SrsTsPayloadPMT::psi_decode(SrsBuffer* stream) @@ -2574,7 +2574,7 @@ int SrsTsPayloadPMT::psi_decode(SrsBuffer* stream)
2574 return ret; 2574 return ret;
2575 } 2575 }
2576 2576
2577 - srs_freep(program_info_desc); 2577 + srs_freepa(program_info_desc);
2578 program_info_desc = new char[program_info_length]; 2578 program_info_desc = new char[program_info_length];
2579 stream->read_bytes(program_info_desc, program_info_length); 2579 stream->read_bytes(program_info_desc, program_info_length);
2580 } 2580 }
@@ -2390,7 +2390,7 @@ int srs_human_print_rtmp_packet4(char type, u_int32_t timestamp, char* data, int @@ -2390,7 +2390,7 @@ int srs_human_print_rtmp_packet4(char type, u_int32_t timestamp, char* data, int
2390 2390
2391 char* amf0_str = NULL; 2391 char* amf0_str = NULL;
2392 srs_human_raw("%s", srs_human_amf0_print(amf0, &amf0_str, NULL)); 2392 srs_human_raw("%s", srs_human_amf0_print(amf0, &amf0_str, NULL));
2393 - srs_freep(amf0_str); 2393 + srs_freepa(amf0_str);
2394 } 2394 }
2395 } else { 2395 } else {
2396 srs_human_trace("Rtmp packet id=%"PRId64"/%.1f/%.1f, type=%#x, dts=%d, pts=%d, ndiff=%d, diff=%d, size=%d", 2396 srs_human_trace("Rtmp packet id=%"PRId64"/%.1f/%.1f, type=%#x, dts=%d, pts=%d, ndiff=%d, diff=%d, size=%d",
@@ -768,7 +768,7 @@ ISrsHttpMessage::ISrsHttpMessage() @@ -768,7 +768,7 @@ ISrsHttpMessage::ISrsHttpMessage()
768 768
769 ISrsHttpMessage::~ISrsHttpMessage() 769 ISrsHttpMessage::~ISrsHttpMessage()
770 { 770 {
771 - srs_freep(_http_ts_send_buffer); 771 + srs_freepa(_http_ts_send_buffer);
772 } 772 }
773 773
774 char* ISrsHttpMessage::http_ts_send_buffer() 774 char* ISrsHttpMessage::http_ts_send_buffer()
@@ -222,7 +222,7 @@ int srs_rtmp_create_msg(char type, u_int32_t timestamp, char* data, int size, in @@ -222,7 +222,7 @@ int srs_rtmp_create_msg(char type, u_int32_t timestamp, char* data, int size, in
222 222
223 // only when failed, we must free the data. 223 // only when failed, we must free the data.
224 if ((ret = srs_do_rtmp_create_msg(type, timestamp, data, size, stream_id, ppmsg)) != ERROR_SUCCESS) { 224 if ((ret = srs_do_rtmp_create_msg(type, timestamp, data, size, stream_id, ppmsg)) != ERROR_SUCCESS) {
225 - srs_freep(data); 225 + srs_freepa(data);
226 return ret; 226 return ret;
227 } 227 }
228 228
@@ -319,8 +319,8 @@ namespace _srs_internal @@ -319,8 +319,8 @@ namespace _srs_internal
319 319
320 key_block::~key_block() 320 key_block::~key_block()
321 { 321 {
322 - srs_freep(random0);  
323 - srs_freep(random1); 322 + srs_freepa(random0);
  323 + srs_freepa(random1);
324 } 324 }
325 325
326 int key_block::parse(SrsBuffer* stream) 326 int key_block::parse(SrsBuffer* stream)
@@ -342,7 +342,7 @@ namespace _srs_internal @@ -342,7 +342,7 @@ namespace _srs_internal
342 342
343 random0_size = valid_offset; 343 random0_size = valid_offset;
344 if (random0_size > 0) { 344 if (random0_size > 0) {
345 - srs_freep(random0); 345 + srs_freepa(random0);
346 random0 = new char[random0_size]; 346 random0 = new char[random0_size];
347 stream->read_bytes(random0, random0_size); 347 stream->read_bytes(random0, random0_size);
348 } 348 }
@@ -351,7 +351,7 @@ namespace _srs_internal @@ -351,7 +351,7 @@ namespace _srs_internal
351 351
352 random1_size = 764 - valid_offset - 128 - 4; 352 random1_size = 764 - valid_offset - 128 - 4;
353 if (random1_size > 0) { 353 if (random1_size > 0) {
354 - srs_freep(random1); 354 + srs_freepa(random1);
355 random1 = new char[random1_size]; 355 random1 = new char[random1_size];
356 stream->read_bytes(random1, random1_size); 356 stream->read_bytes(random1, random1_size);
357 } 357 }
@@ -401,8 +401,8 @@ namespace _srs_internal @@ -401,8 +401,8 @@ namespace _srs_internal
401 401
402 digest_block::~digest_block() 402 digest_block::~digest_block()
403 { 403 {
404 - srs_freep(random0);  
405 - srs_freep(random1); 404 + srs_freepa(random0);
  405 + srs_freepa(random1);
406 } 406 }
407 407
408 int digest_block::parse(SrsBuffer* stream) 408 int digest_block::parse(SrsBuffer* stream)
@@ -419,7 +419,7 @@ namespace _srs_internal @@ -419,7 +419,7 @@ namespace _srs_internal
419 419
420 random0_size = valid_offset; 420 random0_size = valid_offset;
421 if (random0_size > 0) { 421 if (random0_size > 0) {
422 - srs_freep(random0); 422 + srs_freepa(random0);
423 random0 = new char[random0_size]; 423 random0 = new char[random0_size];
424 stream->read_bytes(random0, random0_size); 424 stream->read_bytes(random0, random0_size);
425 } 425 }
@@ -428,7 +428,7 @@ namespace _srs_internal @@ -428,7 +428,7 @@ namespace _srs_internal
428 428
429 random1_size = 764 - 4 - valid_offset - 32; 429 random1_size = 764 - 4 - valid_offset - 32;
430 if (random1_size > 0) { 430 if (random1_size > 0) {
431 - srs_freep(random1); 431 + srs_freepa(random1);
432 random1 = new char[random1_size]; 432 random1 = new char[random1_size];
433 stream->read_bytes(random1, random1_size); 433 stream->read_bytes(random1, random1_size);
434 } 434 }
@@ -592,7 +592,7 @@ namespace _srs_internal @@ -592,7 +592,7 @@ namespace _srs_internal
592 592
593 c1_digest = new char[SRS_OpensslHashSize]; 593 c1_digest = new char[SRS_OpensslHashSize];
594 if ((ret = openssl_HMACsha256(SrsGenuineFPKey, 30, c1s1_joined_bytes, 1536 - 32, c1_digest)) != ERROR_SUCCESS) { 594 if ((ret = openssl_HMACsha256(SrsGenuineFPKey, 30, c1s1_joined_bytes, 1536 - 32, c1_digest)) != ERROR_SUCCESS) {
595 - srs_freep(c1_digest); 595 + srs_freepa(c1_digest);
596 srs_error("calc digest for c1 failed. ret=%d", ret); 596 srs_error("calc digest for c1 failed. ret=%d", ret);
597 return ret; 597 return ret;
598 } 598 }
@@ -620,7 +620,7 @@ namespace _srs_internal @@ -620,7 +620,7 @@ namespace _srs_internal
620 620
621 s1_digest = new char[SRS_OpensslHashSize]; 621 s1_digest = new char[SRS_OpensslHashSize];
622 if ((ret = openssl_HMACsha256(SrsGenuineFMSKey, 36, c1s1_joined_bytes, 1536 - 32, s1_digest)) != ERROR_SUCCESS) { 622 if ((ret = openssl_HMACsha256(SrsGenuineFMSKey, 36, c1s1_joined_bytes, 1536 - 32, s1_digest)) != ERROR_SUCCESS) {
623 - srs_freep(s1_digest); 623 + srs_freepa(s1_digest);
624 srs_error("calc digest for s1 failed. ret=%d", ret); 624 srs_error("calc digest for s1 failed. ret=%d", ret);
625 return ret; 625 return ret;
626 } 626 }
@@ -40,7 +40,7 @@ SrsMessageArray::~SrsMessageArray() @@ -40,7 +40,7 @@ SrsMessageArray::~SrsMessageArray()
40 // we just free the msgs itself, 40 // we just free the msgs itself,
41 // both delete and delete[] is ok, 41 // both delete and delete[] is ok,
42 // for each msg in msgs is already freed by send_and_free_messages. 42 // for each msg in msgs is already freed by send_and_free_messages.
43 - srs_freep(msgs); 43 + srs_freepa(msgs);
44 } 44 }
45 45
46 void SrsMessageArray::free(int count) 46 void SrsMessageArray::free(int count)
@@ -151,14 +151,14 @@ int SrsPacket::encode(int& psize, char*& ppayload) @@ -151,14 +151,14 @@ int SrsPacket::encode(int& psize, char*& ppayload)
151 151
152 if ((ret = stream.initialize(payload, size)) != ERROR_SUCCESS) { 152 if ((ret = stream.initialize(payload, size)) != ERROR_SUCCESS) {
153 srs_error("initialize the stream failed. ret=%d", ret); 153 srs_error("initialize the stream failed. ret=%d", ret);
154 - srs_freep(payload); 154 + srs_freepa(payload);
155 return ret; 155 return ret;
156 } 156 }
157 } 157 }
158 158
159 if ((ret = encode_packet(&stream)) != ERROR_SUCCESS) { 159 if ((ret = encode_packet(&stream)) != ERROR_SUCCESS) {
160 srs_error("encode the packet failed. ret=%d", ret); 160 srs_error("encode the packet failed. ret=%d", ret);
161 - srs_freep(payload); 161 + srs_freepa(payload);
162 return ret; 162 return ret;
163 } 163 }
164 164
@@ -279,7 +279,7 @@ SrsProtocol::~SrsProtocol() @@ -279,7 +279,7 @@ SrsProtocol::~SrsProtocol()
279 SrsChunkStream* cs = cs_cache[i]; 279 SrsChunkStream* cs = cs_cache[i];
280 srs_freep(cs); 280 srs_freep(cs);
281 } 281 }
282 - srs_freep(cs_cache); 282 + srs_freepa(cs_cache);
283 } 283 }
284 284
285 void SrsProtocol::set_auto_response(bool v) 285 void SrsProtocol::set_auto_response(bool v)
@@ -632,7 +632,7 @@ int SrsProtocol::do_send_and_free_packet(SrsPacket* packet, int stream_id) @@ -632,7 +632,7 @@ int SrsProtocol::do_send_and_free_packet(SrsPacket* packet, int stream_id)
632 header.perfer_cid = packet->get_prefer_cid(); 632 header.perfer_cid = packet->get_prefer_cid();
633 633
634 ret = do_simple_send(&header, payload, size); 634 ret = do_simple_send(&header, payload, size);
635 - srs_freep(payload); 635 + srs_freepa(payload);
636 if (ret == ERROR_SUCCESS) { 636 if (ret == ERROR_SUCCESS) {
637 ret = on_send_packet(&header, packet); 637 ret = on_send_packet(&header, packet);
638 } 638 }
@@ -1776,9 +1776,9 @@ SrsHandshakeBytes::SrsHandshakeBytes() @@ -1776,9 +1776,9 @@ SrsHandshakeBytes::SrsHandshakeBytes()
1776 1776
1777 SrsHandshakeBytes::~SrsHandshakeBytes() 1777 SrsHandshakeBytes::~SrsHandshakeBytes()
1778 { 1778 {
1779 - srs_freep(c0c1);  
1780 - srs_freep(s0s1s2);  
1781 - srs_freep(c2); 1779 + srs_freepa(c0c1);
  1780 + srs_freepa(s0s1s2);
  1781 + srs_freepa(c2);
1782 } 1782 }
1783 1783
1784 int SrsHandshakeBytes::read_c0c1(ISrsProtocolReaderWriter* io) 1784 int SrsHandshakeBytes::read_c0c1(ISrsProtocolReaderWriter* io)