refine autofree, only free object, never free arrays

pull/133/head
winlin 11 years ago
parent 300f264e92
commit dc66c525fd

@ -203,8 +203,8 @@ int SrsBandwidth::do_bandwidth_check()
srs_info("expect final message failed. ret=%d", ret);
return ERROR_SUCCESS;
}
SrsAutoFree(SrsMessage, msg, false);
SrsAutoFree(SrsBandwidthPacket, pkt, false);
SrsAutoFree(SrsMessage, msg);
SrsAutoFree(SrsBandwidthPacket, pkt);
srs_info("get final message success.");
if (pkt->is_flash_final()) {
@ -248,8 +248,8 @@ int SrsBandwidth::check_play(
srs_error("expect bandwidth message failed. ret=%d", ret);
return ret;
}
SrsAutoFree(SrsMessage, msg, false);
SrsAutoFree(SrsBandwidthPacket, pkt, false);
SrsAutoFree(SrsMessage, msg);
SrsAutoFree(SrsBandwidthPacket, pkt);
srs_info("get bandwidth message succes.");
if (pkt->is_starting_play()) {
@ -329,8 +329,8 @@ int SrsBandwidth::check_play(
srs_error("expect bandwidth message failed. ret=%d", ret);
return ret;
}
SrsAutoFree(SrsMessage, msg, false);
SrsAutoFree(SrsBandwidthPacket, pkt, false);
SrsAutoFree(SrsMessage, msg);
SrsAutoFree(SrsBandwidthPacket, pkt);
srs_info("get bandwidth message succes.");
if (pkt->is_stopped_play()) {
@ -372,8 +372,8 @@ int SrsBandwidth::check_publish(
srs_error("expect bandwidth message failed. ret=%d", ret);
return ret;
}
SrsAutoFree(SrsMessage, msg, false);
SrsAutoFree(SrsBandwidthPacket, pkt, false);
SrsAutoFree(SrsMessage, msg);
SrsAutoFree(SrsBandwidthPacket, pkt);
srs_info("get bandwidth message succes.");
if (pkt->is_starting_publish()) {
@ -392,7 +392,7 @@ int SrsBandwidth::check_publish(
srs_error("recv message failed. ret=%d", ret);
return ret;
}
SrsAutoFree(SrsMessage, msg, false);
SrsAutoFree(SrsMessage, msg);
publish_bytes = rtmp->get_recv_bytes();
@ -440,8 +440,8 @@ int SrsBandwidth::check_publish(
srs_error("expect bandwidth message failed. ret=%d", ret);
return ret;
}
SrsAutoFree(SrsMessage, msg, false);
SrsAutoFree(SrsBandwidthPacket, pkt, false);
SrsAutoFree(SrsMessage, msg);
SrsAutoFree(SrsBandwidthPacket, pkt);
srs_info("get bandwidth message succes.");
if (pkt->is_stopped_publish()) {

@ -488,7 +488,7 @@ int SrsConfig::reload()
srs_info("config reloader parse file success.");
SrsConfDirective* old_root = root;
SrsAutoFree(SrsConfDirective, old_root, false);
SrsAutoFree(SrsConfDirective, old_root);
root = conf.root;
conf.root = NULL;

@ -446,7 +446,7 @@ int SrsDvrPlan::on_meta_data(SrsOnMetaDataPacket* metadata)
if ((ret = metadata->encode(size, payload)) != ERROR_SUCCESS) {
return ret;
}
SrsAutoFree(char, payload, true);
SrsAutoFree(char, payload);
if ((ret = enc->write_metadata(payload, size)) != ERROR_SUCCESS) {
return ret;
@ -835,7 +835,7 @@ int SrsDvrHssPlan::on_meta_data(SrsOnMetaDataPacket* metadata)
if ((ret = metadata->encode(size, payload)) != ERROR_SUCCESS) {
return ret;
}
SrsAutoFree(char, payload, true);
SrsAutoFree(char, payload);
if ((ret = enc.write_metadata(payload, size)) != ERROR_SUCCESS) {
return ret;
@ -1002,7 +1002,7 @@ int SrsDvr::on_audio(SrsSharedPtrMessage* audio)
{
int ret = ERROR_SUCCESS;
SrsAutoFree(SrsSharedPtrMessage, audio, false);
SrsAutoFree(SrsSharedPtrMessage, audio);
if ((ret = plan->on_audio(audio)) != ERROR_SUCCESS) {
return ret;
@ -1015,7 +1015,7 @@ int SrsDvr::on_video(SrsSharedPtrMessage* video)
{
int ret = ERROR_SUCCESS;
SrsAutoFree(SrsSharedPtrMessage, video, false);
SrsAutoFree(SrsSharedPtrMessage, video);
if ((ret = plan->on_video(video)) != ERROR_SUCCESS) {
return ret;

@ -186,7 +186,7 @@ int SrsEdgeIngester::ingest()
srs_verbose("edge loop recv message. ret=%d", ret);
srs_assert(msg);
SrsAutoFree(SrsMessage, msg, false);
SrsAutoFree(SrsMessage, msg);
if ((ret = process_publish_message(msg)) != ERROR_SUCCESS) {
return ret;
@ -234,7 +234,7 @@ int SrsEdgeIngester::process_publish_message(SrsMessage* msg)
srs_error("decode onMetaData message failed. ret=%d", ret);
return ret;
}
SrsAutoFree(SrsPacket, pkt, false);
SrsAutoFree(SrsPacket, pkt);
if (dynamic_cast<SrsOnMetaDataPacket*>(pkt)) {
SrsOnMetaDataPacket* metadata = dynamic_cast<SrsOnMetaDataPacket*>(pkt);
@ -527,7 +527,7 @@ int SrsEdgeForwarder::proxy(SrsMessage* msg)
// TODO: FIXME: use utility to copy msg to shared ptr msg.
SrsSharedPtrMessage* copy = new SrsSharedPtrMessage();
SrsAutoFree(SrsSharedPtrMessage, copy, false);
SrsAutoFree(SrsSharedPtrMessage, copy);
if ((ret = copy->initialize(msg)) != ERROR_SUCCESS) {
srs_error("initialize the msg failed. ret=%d", ret);
return ret;

@ -1388,7 +1388,7 @@ int SrsHls::on_audio(SrsSharedPtrMessage* audio)
{
int ret = ERROR_SUCCESS;
SrsAutoFree(SrsSharedPtrMessage, audio, false);
SrsAutoFree(SrsSharedPtrMessage, audio);
if (!hls_enabled) {
return ret;
@ -1432,7 +1432,7 @@ int SrsHls::on_video(SrsSharedPtrMessage* video)
{
int ret = ERROR_SUCCESS;
SrsAutoFree(SrsSharedPtrMessage, video, false);
SrsAutoFree(SrsSharedPtrMessage, video);
if (!hls_enabled) {
return ret;

@ -532,7 +532,7 @@ int SrsHttpApi::do_cycle()
srs_assert(req->is_complete());
// always free it in this scope.
SrsAutoFree(SrsHttpMessage, req, false);
SrsAutoFree(SrsHttpMessage, req);
// ok, handle http request.
if ((ret = process_request(&skt, req)) != ERROR_SUCCESS) {

@ -228,7 +228,7 @@ int SrsHttpVhost::do_process_request(SrsSocket* skt, SrsHttpMessage* req)
::lseek(fd, 0, SEEK_SET);
char* buf = new char[length];
SrsAutoFree(char, buf, true);
SrsAutoFree(char, buf);
// TODO: FIXME: use st_read.
if (::read(fd, buf, length) < 0) {
@ -352,7 +352,7 @@ int SrsHttpConn::do_cycle()
srs_assert(req->is_complete());
// always free it in this scope.
SrsAutoFree(SrsHttpMessage, req, false);
SrsAutoFree(SrsHttpMessage, req);
// ok, handle http request.
if ((ret = process_request(&skt, req)) != ERROR_SUCCESS) {

@ -460,7 +460,7 @@ int SrsRtmpConn::playing(SrsSource* source)
}
srs_assert(consumer != NULL);
SrsAutoFree(SrsConsumer, consumer, false);
SrsAutoFree(SrsConsumer, consumer);
srs_verbose("consumer created success.");
rtmp->set_recv_timeout(SRS_PULSE_TIMEOUT_US);
@ -595,7 +595,7 @@ int SrsRtmpConn::fmle_publish(SrsSource* source)
return ret;
}
SrsAutoFree(SrsMessage, msg, false);
SrsAutoFree(SrsMessage, msg);
pithy_print.elapse();
@ -614,7 +614,7 @@ int SrsRtmpConn::fmle_publish(SrsSource* source)
return ret;
}
SrsAutoFree(SrsPacket, pkt, false);
SrsAutoFree(SrsPacket, pkt);
if (dynamic_cast<SrsFMLEStartPacket*>(pkt)) {
SrsFMLEStartPacket* unpublish = dynamic_cast<SrsFMLEStartPacket*>(pkt);
@ -671,7 +671,7 @@ int SrsRtmpConn::flash_publish(SrsSource* source)
return ret;
}
SrsAutoFree(SrsMessage, msg, false);
SrsAutoFree(SrsMessage, msg);
pithy_print.elapse();
@ -690,7 +690,7 @@ int SrsRtmpConn::flash_publish(SrsSource* source)
return ret;
}
SrsAutoFree(SrsPacket, pkt, false);
SrsAutoFree(SrsPacket, pkt);
// flash unpublish.
// TODO: maybe need to support republish.
@ -754,7 +754,7 @@ int SrsRtmpConn::process_publish_message(SrsSource* source, SrsMessage* msg, boo
srs_error("decode onMetaData message failed. ret=%d", ret);
return ret;
}
SrsAutoFree(SrsPacket, pkt, false);
SrsAutoFree(SrsPacket, pkt);
if (dynamic_cast<SrsOnMetaDataPacket*>(pkt)) {
SrsOnMetaDataPacket* metadata = dynamic_cast<SrsOnMetaDataPacket*>(pkt);
@ -781,7 +781,7 @@ int SrsRtmpConn::process_play_control_msg(SrsConsumer* consumer, SrsMessage* msg
srs_verbose("ignore all empty message.");
return ret;
}
SrsAutoFree(SrsMessage, msg, false);
SrsAutoFree(SrsMessage, msg);
if (!msg->header.is_amf0_command() && !msg->header.is_amf3_command()) {
srs_info("ignore all message except amf0/amf3 command.");
@ -795,7 +795,7 @@ int SrsRtmpConn::process_play_control_msg(SrsConsumer* consumer, SrsMessage* msg
}
srs_info("decode the amf0/amf3 command packet success.");
SrsAutoFree(SrsPacket, pkt, false);
SrsAutoFree(SrsPacket, pkt);
// for jwplayer/flowplayer, which send close as pause message.
// @see https://github.com/winlinvip/simple-rtmp-server/issues/6

@ -898,7 +898,7 @@ int SrsSource::on_audio(SrsMessage* audio)
int ret = ERROR_SUCCESS;
SrsSharedPtrMessage* msg = new SrsSharedPtrMessage();
SrsAutoFree(SrsSharedPtrMessage, msg, false);
SrsAutoFree(SrsSharedPtrMessage, msg);
if ((ret = msg->initialize(audio)) != ERROR_SUCCESS) {
srs_error("initialize the audio failed. ret=%d", ret);
return ret;
@ -988,7 +988,7 @@ int SrsSource::on_video(SrsMessage* video)
int ret = ERROR_SUCCESS;
SrsSharedPtrMessage* msg = new SrsSharedPtrMessage();
SrsAutoFree(SrsSharedPtrMessage, msg, false);
SrsAutoFree(SrsSharedPtrMessage, msg);
if ((ret = msg->initialize(video)) != ERROR_SUCCESS) {
srs_error("initialize the video failed. ret=%d", ret);
return ret;

@ -33,23 +33,21 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
/**
* auto free the instance in the current scope.
*/
#define SrsAutoFree(className, instance, is_array) \
__SrsAutoFree<className> _auto_free_##instance((className**)&instance, is_array)
#define SrsAutoFree(className, instance) \
__SrsAutoFree<className> _auto_free_##instance((className**)&instance)
template<class T>
class __SrsAutoFree
{
private:
T** ptr;
bool is_array;
public:
/**
* auto delete the ptr.
* @is_array a bool value indicates whether the ptr is a array.
*/
__SrsAutoFree(T** _ptr, bool _is_array){
__SrsAutoFree(T** _ptr){
ptr = _ptr;
is_array = _is_array;
}
virtual ~__SrsAutoFree(){
@ -57,15 +55,22 @@ public:
return;
}
if (is_array) {
delete[] *ptr;
} else {
delete *ptr;
}
delete *ptr;
*ptr = NULL;
}
};
/**
* auto free the array ptrs, for example, MyClass* msgs[10],
* which stores 10 MyClass* objects, this class will:
* 1. free each MyClass* in array.
* 2. free the msgs itself.
* @remark, MyClass* msgs[] equals to MyClass**, the ptr array equals ptr to ptr.
*/
template<class T>
class SrsObjectPtrArrayAutoFree
{
};
#endif

@ -291,7 +291,7 @@ int srs_read_packet(srs_rtmp_t rtmp, int* type, u_int32_t* timestamp, char** dat
continue;
}
SrsAutoFree(SrsMessage, msg, false);
SrsAutoFree(SrsMessage, msg);
if (msg->header.is_audio()) {
*type = SRS_RTMP_TYPE_AUDIO;

@ -348,8 +348,8 @@ int SrsBandCheckClient::expect_start_play()
srs_error("expect bandcheck start play message failed. ret=%d", ret);
return ret;
}
SrsAutoFree(SrsMessage, msg, false);
SrsAutoFree(SrsBandwidthPacket, pkt, false);
SrsAutoFree(SrsMessage, msg);
SrsAutoFree(SrsBandwidthPacket, pkt);
srs_info("get bandcheck start play message");
if (pkt->command_name != SRS_BW_CHECK_START_PLAY) {
@ -385,8 +385,8 @@ int SrsBandCheckClient::expect_stop_play()
srs_error("expect stop play message failed. ret=%d", ret);
return ret;
}
SrsAutoFree(SrsMessage, msg, false);
SrsAutoFree(SrsBandwidthPacket, pkt, false);
SrsAutoFree(SrsMessage, msg);
SrsAutoFree(SrsBandwidthPacket, pkt);
srs_info("get bandcheck stop play message");
if (pkt->command_name == SRS_BW_CHECK_STOP_PLAY) {
@ -422,8 +422,8 @@ int SrsBandCheckClient::expect_start_pub()
srs_error("expect start pub message failed. ret=%d", ret);
return ret;
}
SrsAutoFree(SrsMessage, msg, false);
SrsAutoFree(SrsBandwidthPacket, pkt, false);
SrsAutoFree(SrsMessage, msg);
SrsAutoFree(SrsBandwidthPacket, pkt);
srs_info("get bandcheck start pub message");
if (pkt->command_name == SRS_BW_CHECK_START_PUBLISH) {
@ -491,8 +491,8 @@ int SrsBandCheckClient::expect_stop_pub()
if ((ret = srs_rtmp_expect_message<SrsBandwidthPacket>(this->protocol, &msg, &pkt)) != ERROR_SUCCESS) {
return ret;
}
SrsAutoFree(SrsMessage, msg, false);
SrsAutoFree(SrsBandwidthPacket, pkt, false);
SrsAutoFree(SrsMessage, msg);
SrsAutoFree(SrsBandwidthPacket, pkt);
if (pkt->command_name == SRS_BW_CHECK_STOP_PUBLISH) {
return ret;
}
@ -511,13 +511,13 @@ int SrsBandCheckClient::expect_finished()
srs_error("expect finished message failed. ret=%d", ret);
return ret;
}
SrsAutoFree(SrsMessage, msg, false);
SrsAutoFree(SrsBandwidthPacket, pkt, false);
SrsAutoFree(SrsMessage, msg);
SrsAutoFree(SrsBandwidthPacket, pkt);
srs_info("get bandcheck finished message");
if (pkt->command_name == SRS_BW_CHECK_FINISHED) {
SrsStream *stream = new SrsStream;
SrsAutoFree(SrsStream, stream, false);
SrsAutoFree(SrsStream, stream);
if ((ret = stream->initialize((char*)msg->payload, msg->size)) != ERROR_SUCCESS) {
srs_error("initialize stream error. ret=%d", ret);

@ -813,7 +813,7 @@ namespace srs
}
srs_assert(digest != NULL);
SrsAutoFree(char, digest, true);
SrsAutoFree(char, digest);
if (schema == srs_schema0) {
memcpy(block1.digest.digest, digest, 32);
@ -837,7 +837,7 @@ namespace srs
}
srs_assert(c1_digest != NULL);
SrsAutoFree(char, c1_digest, true);
SrsAutoFree(char, c1_digest);
if (schema == srs_schema0) {
is_valid = srs_bytes_equals(block1.digest.digest, c1_digest, 32);
@ -861,7 +861,7 @@ namespace srs
}
srs_assert(s1_digest != NULL);
SrsAutoFree(char, s1_digest, true);
SrsAutoFree(char, s1_digest);
if (schema == srs_schema0) {
is_valid = srs_bytes_equals(block1.digest.digest, s1_digest, 32);
@ -917,7 +917,7 @@ namespace srs
srs_verbose("calc s1 digest success.");
srs_assert(s1_digest != NULL);
SrsAutoFree(char, s1_digest, true);
SrsAutoFree(char, s1_digest);
if (schema == srs_schema0) {
memcpy(block1.digest.digest, s1_digest, 32);
@ -944,7 +944,7 @@ namespace srs
}
srs_assert(c1s1_joined_bytes != NULL);
SrsAutoFree(char, c1s1_joined_bytes, true);
SrsAutoFree(char, c1s1_joined_bytes);
digest = new char[OpensslHashSize];
if ((ret = openssl_HMACsha256(c1s1_joined_bytes, 1536 - 32, SrsGenuineFMSKey, 36, digest)) != ERROR_SUCCESS) {
@ -971,7 +971,7 @@ namespace srs
}
srs_assert(c1s1_joined_bytes != NULL);
SrsAutoFree(char, c1s1_joined_bytes, true);
SrsAutoFree(char, c1s1_joined_bytes);
digest = new char[OpensslHashSize];
if ((ret = openssl_HMACsha256(c1s1_joined_bytes, 1536 - 32, SrsGenuineFPKey, 30, digest)) != ERROR_SUCCESS) {

@ -490,8 +490,8 @@ int SrsRtmpClient::connect_app(string app, string tc_url)
srs_error("expect connect app response message failed. ret=%d", ret);
return ret;
}
SrsAutoFree(SrsMessage, msg, false);
SrsAutoFree(SrsConnectAppResPacket, pkt, false);
SrsAutoFree(SrsMessage, msg);
SrsAutoFree(SrsConnectAppResPacket, pkt);
srs_info("get connect app response message");
return ret;
@ -517,8 +517,8 @@ int SrsRtmpClient::create_stream(int& stream_id)
srs_error("expect create stream response message failed. ret=%d", ret);
return ret;
}
SrsAutoFree(SrsMessage, msg, false);
SrsAutoFree(SrsCreateStreamResPacket, pkt, false);
SrsAutoFree(SrsMessage, msg);
SrsAutoFree(SrsCreateStreamResPacket, pkt);
srs_info("get create stream response message");
stream_id = (int)pkt->stream_id;
@ -651,8 +651,8 @@ int SrsRtmpClient::fmle_publish(string stream, int& stream_id)
srs_error("expect create stream response message failed. ret=%d", ret);
return ret;
}
SrsAutoFree(SrsMessage, msg, false);
SrsAutoFree(SrsCreateStreamResPacket, pkt, false);
SrsAutoFree(SrsMessage, msg);
SrsAutoFree(SrsCreateStreamResPacket, pkt);
srs_info("get create stream response message");
stream_id = (int)pkt->stream_id;
@ -772,8 +772,8 @@ int SrsRtmpServer::connect_app(SrsRequest* req)
srs_error("expect connect app message failed. ret=%d", ret);
return ret;
}
SrsAutoFree(SrsMessage, msg, false);
SrsAutoFree(SrsConnectAppPacket, pkt, false);
SrsAutoFree(SrsMessage, msg);
SrsAutoFree(SrsConnectAppPacket, pkt);
srs_info("get connect app message");
SrsAmf0Any* prop = NULL;
@ -922,7 +922,7 @@ int SrsRtmpServer::identify_client(int stream_id, SrsRtmpConnType& type, string&
return ret;
}
SrsAutoFree(SrsMessage, msg, false);
SrsAutoFree(SrsMessage, msg);
if (!msg->header.is_amf0_command() && !msg->header.is_amf3_command()) {
srs_trace("identify ignore messages except "
@ -936,7 +936,7 @@ int SrsRtmpServer::identify_client(int stream_id, SrsRtmpConnType& type, string&
return ret;
}
SrsAutoFree(SrsPacket, pkt, false);
SrsAutoFree(SrsPacket, pkt);
if (dynamic_cast<SrsCreateStreamPacket*>(pkt)) {
srs_info("identify client by create stream, play or flash publish.");
@ -1128,8 +1128,8 @@ int SrsRtmpServer::start_fmle_publish(int stream_id)
}
srs_info("recv FCPublish request message success.");
SrsAutoFree(SrsMessage, msg, false);
SrsAutoFree(SrsFMLEStartPacket, pkt, false);
SrsAutoFree(SrsMessage, msg);
SrsAutoFree(SrsFMLEStartPacket, pkt);
fc_publish_tid = pkt->transaction_id;
}
@ -1154,8 +1154,8 @@ int SrsRtmpServer::start_fmle_publish(int stream_id)
}
srs_info("recv createStream request message success.");
SrsAutoFree(SrsMessage, msg, false);
SrsAutoFree(SrsCreateStreamPacket, pkt, false);
SrsAutoFree(SrsMessage, msg);
SrsAutoFree(SrsCreateStreamPacket, pkt);
create_stream_tid = pkt->transaction_id;
}
@ -1179,8 +1179,8 @@ int SrsRtmpServer::start_fmle_publish(int stream_id)
}
srs_info("recv publish request message success.");
SrsAutoFree(SrsMessage, msg, false);
SrsAutoFree(SrsPublishPacket, pkt, false);
SrsAutoFree(SrsMessage, msg);
SrsAutoFree(SrsPublishPacket, pkt);
}
// publish response onFCPublish(NetStream.Publish.Start)
if (true) {
@ -1310,7 +1310,7 @@ int SrsRtmpServer::identify_create_stream_client(SrsCreateStreamPacket* req, int
return ret;
}
SrsAutoFree(SrsMessage, msg, false);
SrsAutoFree(SrsMessage, msg);
if (!msg->header.is_amf0_command() && !msg->header.is_amf3_command()) {
srs_trace("identify ignore messages except "
@ -1324,7 +1324,7 @@ int SrsRtmpServer::identify_create_stream_client(SrsCreateStreamPacket* req, int
return ret;
}
SrsAutoFree(SrsPacket, pkt, false);
SrsAutoFree(SrsPacket, pkt);
if (dynamic_cast<SrsPlayPacket*>(pkt)) {
srs_info("level1 identify client by play.");

@ -442,7 +442,7 @@ int SrsProtocol::do_send_and_free_message(SrsMessage* msg, SrsPacket* packet)
// always free msg.
srs_assert(msg);
SrsAutoFree(SrsMessage, msg, false);
SrsAutoFree(SrsMessage, msg);
// we donot use the complex basic header,
// ensure the basic header is 1bytes.
@ -735,7 +735,7 @@ int SrsProtocol::send_and_free_packet(SrsPacket* packet, int stream_id)
int ret = ERROR_SUCCESS;
srs_assert(packet);
SrsAutoFree(SrsPacket, packet, false);
SrsAutoFree(SrsPacket, packet);
int size = 0;
char* payload = NULL;
@ -1274,7 +1274,7 @@ int SrsProtocol::on_recv_message(SrsMessage* msg)
srs_assert(packet);
// always free the packet.
SrsAutoFree(SrsPacket, packet, false);
SrsAutoFree(SrsPacket, packet);
switch (msg->header.message_type) {
case RTMP_MSG_WindowAcknowledgementSize: {
@ -2584,7 +2584,7 @@ int SrsPlayPacket::decode(SrsStream* stream)
srs_error("amf0 read play reset marker failed. ret=%d", ret);
return ret;
}
SrsAutoFree(SrsAmf0Any, reset_value, false);
SrsAutoFree(SrsAmf0Any, reset_value);
if (reset_value) {
// check if the value is bool or number
@ -3160,7 +3160,7 @@ int SrsOnMetaDataPacket::decode(SrsStream* stream)
return ret;
}
SrsAutoFree(SrsAmf0Any, any, false);
SrsAutoFree(SrsAmf0Any, any);
if (any->is_ecma_array()) {
SrsAmf0EcmaArray* arr = any->to_ecma_array();

@ -52,13 +52,13 @@ VOID TEST(AMF0Test, ScenarioMain)
// version: string
// srs_sig: string
SrsAmf0Object* props = SrsAmf0Any::object();
SrsAutoFree(SrsAmf0Object, props, false);
SrsAutoFree(SrsAmf0Object, props);
props->set("fmsVer", SrsAmf0Any::str("FMS/3,5,3,888"));
props->set("capabilities", SrsAmf0Any::number(253));
props->set("mode", SrsAmf0Any::number(123));
SrsAmf0Object* info = SrsAmf0Any::object();
SrsAutoFree(SrsAmf0Object, info, false);
SrsAutoFree(SrsAmf0Object, info);
info->set("level", SrsAmf0Any::str("info"));
info->set("code", SrsAmf0Any::str("NetStream.Connnect.Success"));
info->set("descrption", SrsAmf0Any::str("connected"));
@ -85,7 +85,7 @@ VOID TEST(AMF0Test, ScenarioMain)
EXPECT_EQ(0x03, bytes[0]);
EXPECT_EQ(0x09, bytes[nb_bytes - 1]);
}
SrsAutoFree(char, bytes, true);
SrsAutoFree(char, bytes);
// decoding amf0 object from bytes
// when user know the schema
@ -100,12 +100,12 @@ VOID TEST(AMF0Test, ScenarioMain)
// if user know the schema, for instance, it's an amf0 object,
// user can use specified object to decoding.
SrsAmf0Object* props = SrsAmf0Any::object();
SrsAutoFree(SrsAmf0Object, props, false);
SrsAutoFree(SrsAmf0Object, props);
EXPECT_EQ(ERROR_SUCCESS, props->read(&s));
// user can use specified object to decoding.
SrsAmf0Object* info = SrsAmf0Any::object();
SrsAutoFree(SrsAmf0Object, info, false);
SrsAutoFree(SrsAmf0Object, info);
EXPECT_EQ(ERROR_SUCCESS, info->read(&s));
// use the decoded data.
@ -150,7 +150,7 @@ VOID TEST(AMF0Test, ScenarioMain)
// decoding a amf0 any, for user donot know
SrsAmf0Any* any = NULL;
EXPECT_EQ(ERROR_SUCCESS, srs_amf0_read_any(&s, &any));
SrsAutoFree(SrsAmf0Any, any, false);
SrsAutoFree(SrsAmf0Any, any);
// for amf0 object
if (any->is_object()) {
@ -192,7 +192,7 @@ VOID TEST(AMF0Test, ApiSize)
if (true) {
int size = 1+3;
SrsAmf0Object* o = SrsAmf0Any::object();
SrsAutoFree(SrsAmf0Object, o, false);
SrsAutoFree(SrsAmf0Object, o);
EXPECT_EQ(size, SrsAmf0Size::object(o));
}
@ -200,7 +200,7 @@ VOID TEST(AMF0Test, ApiSize)
if (true) {
int size = 1+3;
SrsAmf0Object* o = SrsAmf0Any::object();
SrsAutoFree(SrsAmf0Object, o, false);
SrsAutoFree(SrsAmf0Object, o);
size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin");
o->set("name", SrsAmf0Any::str("winlin"));
@ -210,7 +210,7 @@ VOID TEST(AMF0Test, ApiSize)
if (true) {
int size = 1+3;
SrsAmf0Object* o = SrsAmf0Any::object();
SrsAutoFree(SrsAmf0Object, o, false);
SrsAutoFree(SrsAmf0Object, o);
size += SrsAmf0Size::utf8("age")+SrsAmf0Size::number();
o->set("age", SrsAmf0Any::number(9));
@ -220,7 +220,7 @@ VOID TEST(AMF0Test, ApiSize)
if (true) {
int size = 1+3;
SrsAmf0Object* o = SrsAmf0Any::object();
SrsAutoFree(SrsAmf0Object, o, false);
SrsAutoFree(SrsAmf0Object, o);
size += SrsAmf0Size::utf8("email")+SrsAmf0Size::null();
o->set("email", SrsAmf0Any::null());
@ -230,7 +230,7 @@ VOID TEST(AMF0Test, ApiSize)
if (true) {
int size = 1+3;
SrsAmf0Object* o = SrsAmf0Any::object();
SrsAutoFree(SrsAmf0Object, o, false);
SrsAutoFree(SrsAmf0Object, o);
size += SrsAmf0Size::utf8("email")+SrsAmf0Size::undefined();
o->set("email", SrsAmf0Any::undefined());
@ -240,7 +240,7 @@ VOID TEST(AMF0Test, ApiSize)
if (true) {
int size = 1+3;
SrsAmf0Object* o = SrsAmf0Any::object();
SrsAutoFree(SrsAmf0Object, o, false);
SrsAutoFree(SrsAmf0Object, o);
size += SrsAmf0Size::utf8("sex")+SrsAmf0Size::boolean();
o->set("sex", SrsAmf0Any::boolean(true));
@ -252,7 +252,7 @@ VOID TEST(AMF0Test, ApiSize)
if (true) {
int size = 1+4+3;
SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
SrsAutoFree(SrsAmf0EcmaArray, o, false);
SrsAutoFree(SrsAmf0EcmaArray, o);
EXPECT_EQ(size, SrsAmf0Size::ecma_array(o));
}
@ -260,7 +260,7 @@ VOID TEST(AMF0Test, ApiSize)
if (true) {
int size = 1+4+3;
SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
SrsAutoFree(SrsAmf0EcmaArray, o, false);
SrsAutoFree(SrsAmf0EcmaArray, o);
size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin");
o->set("name", SrsAmf0Any::str("winlin"));
@ -270,7 +270,7 @@ VOID TEST(AMF0Test, ApiSize)
if (true) {
int size = 1+4+3;
SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
SrsAutoFree(SrsAmf0EcmaArray, o, false);
SrsAutoFree(SrsAmf0EcmaArray, o);
size += SrsAmf0Size::utf8("age")+SrsAmf0Size::number();
o->set("age", SrsAmf0Any::number(9));
@ -280,7 +280,7 @@ VOID TEST(AMF0Test, ApiSize)
if (true) {
int size = 1+4+3;
SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
SrsAutoFree(SrsAmf0EcmaArray, o, false);
SrsAutoFree(SrsAmf0EcmaArray, o);
size += SrsAmf0Size::utf8("email")+SrsAmf0Size::null();
o->set("email", SrsAmf0Any::null());
@ -290,7 +290,7 @@ VOID TEST(AMF0Test, ApiSize)
if (true) {
int size = 1+4+3;
SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
SrsAutoFree(SrsAmf0EcmaArray, o, false);
SrsAutoFree(SrsAmf0EcmaArray, o);
size += SrsAmf0Size::utf8("email")+SrsAmf0Size::undefined();
o->set("email", SrsAmf0Any::undefined());
@ -300,7 +300,7 @@ VOID TEST(AMF0Test, ApiSize)
if (true) {
int size = 1+4+3;
SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
SrsAutoFree(SrsAmf0EcmaArray, o, false);
SrsAutoFree(SrsAmf0EcmaArray, o);
size += SrsAmf0Size::utf8("sex")+SrsAmf0Size::boolean();
o->set("sex", SrsAmf0Any::boolean(true));
@ -312,7 +312,7 @@ VOID TEST(AMF0Test, ApiSize)
if (true) {
int size = 1+3;
SrsAmf0Object* o = SrsAmf0Any::object();
SrsAutoFree(SrsAmf0Object, o, false);
SrsAutoFree(SrsAmf0Object, o);
size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin");
o->set("name", SrsAmf0Any::str("winlin"));
@ -327,7 +327,7 @@ VOID TEST(AMF0Test, ApiSize)
if (true) {
int size = 1+3;
SrsAmf0Object* o = SrsAmf0Any::object();
SrsAutoFree(SrsAmf0Object, o, false);
SrsAutoFree(SrsAmf0Object, o);
size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin");
o->set("name", SrsAmf0Any::str("winlin"));
@ -349,7 +349,7 @@ VOID TEST(AMF0Test, ApiSize)
if (true) {
int size = 1+4+3;
SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
SrsAutoFree(SrsAmf0EcmaArray, o, false);
SrsAutoFree(SrsAmf0EcmaArray, o);
size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin");
o->set("name", SrsAmf0Any::str("winlin"));
@ -364,7 +364,7 @@ VOID TEST(AMF0Test, ApiSize)
if (true) {
int size = 1+4+3;
SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
SrsAutoFree(SrsAmf0EcmaArray, o, false);
SrsAutoFree(SrsAmf0EcmaArray, o);
size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin");
o->set("name", SrsAmf0Any::str("winlin"));
@ -386,7 +386,7 @@ VOID TEST(AMF0Test, ApiSize)
if (true) {
int size = 1+3;
SrsAmf0Object* o = SrsAmf0Any::object();
SrsAutoFree(SrsAmf0Object, o, false);
SrsAutoFree(SrsAmf0Object, o);
size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin");
o->set("name", SrsAmf0Any::str("winlin"));
@ -408,7 +408,7 @@ VOID TEST(AMF0Test, ApiSize)
if (true) {
int size = 1+4+3;
SrsAmf0EcmaArray* o = SrsAmf0Any::ecma_array();
SrsAutoFree(SrsAmf0EcmaArray, o, false);
SrsAutoFree(SrsAmf0EcmaArray, o);
size += SrsAmf0Size::utf8("name")+SrsAmf0Size::str("winlin");
o->set("name", SrsAmf0Any::str("winlin"));
@ -434,14 +434,14 @@ VOID TEST(AMF0Test, ApiAnyElem)
// string
if (true) {
o = SrsAmf0Any::str();
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
ASSERT_TRUE(NULL != o);
EXPECT_TRUE(o->is_string());
EXPECT_STREQ("", o->to_str().c_str());
}
if (true) {
o = SrsAmf0Any::str("winlin");
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
ASSERT_TRUE(NULL != o);
EXPECT_TRUE(o->is_string());
EXPECT_STREQ("winlin", o->to_str().c_str());
@ -450,21 +450,21 @@ VOID TEST(AMF0Test, ApiAnyElem)
// bool
if (true) {
o = SrsAmf0Any::boolean();
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
ASSERT_TRUE(NULL != o);
EXPECT_TRUE(o->is_boolean());
EXPECT_FALSE(o->to_boolean());
}
if (true) {
o = SrsAmf0Any::boolean(false);
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
ASSERT_TRUE(NULL != o);
EXPECT_TRUE(o->is_boolean());
EXPECT_FALSE(o->to_boolean());
}
if (true) {
o = SrsAmf0Any::boolean(true);
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
ASSERT_TRUE(NULL != o);
EXPECT_TRUE(o->is_boolean());
EXPECT_TRUE(o->to_boolean());
@ -473,21 +473,21 @@ VOID TEST(AMF0Test, ApiAnyElem)
// number
if (true) {
o = SrsAmf0Any::number();
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
ASSERT_TRUE(NULL != o);
EXPECT_TRUE(o->is_number());
EXPECT_DOUBLE_EQ(0, o->to_number());
}
if (true) {
o = SrsAmf0Any::number(100);
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
ASSERT_TRUE(NULL != o);
EXPECT_TRUE(o->is_number());
EXPECT_DOUBLE_EQ(100, o->to_number());
}
if (true) {
o = SrsAmf0Any::number(-100);
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
ASSERT_TRUE(NULL != o);
EXPECT_TRUE(o->is_number());
EXPECT_DOUBLE_EQ(-100, o->to_number());
@ -496,7 +496,7 @@ VOID TEST(AMF0Test, ApiAnyElem)
// null
if (true) {
o = SrsAmf0Any::null();
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
ASSERT_TRUE(NULL != o);
EXPECT_TRUE(o->is_null());
}
@ -504,7 +504,7 @@ VOID TEST(AMF0Test, ApiAnyElem)
// undefined
if (true) {
o = SrsAmf0Any::undefined();
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
ASSERT_TRUE(NULL != o);
EXPECT_TRUE(o->is_undefined());
}
@ -525,7 +525,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
s.current()[2] = 0x09;
o = SrsAmf0Any::object_eof();
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
EXPECT_EQ(ERROR_SUCCESS, o->read(&s));
EXPECT_EQ(o->total_size(), s.pos());
@ -539,7 +539,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
s.reset();
o = SrsAmf0Any::object_eof();
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
EXPECT_EQ(o->total_size(), s.pos());
@ -554,7 +554,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
s.reset();
o = SrsAmf0Any::str("winlin");
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
EXPECT_EQ(o->total_size(), s.pos());
@ -577,7 +577,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
s.reset();
o = SrsAmf0Any::number(10);
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
EXPECT_EQ(o->total_size(), s.pos());
@ -596,7 +596,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
s.reset();
o = SrsAmf0Any::boolean(true);
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
EXPECT_EQ(o->total_size(), s.pos());
@ -613,7 +613,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
s.reset();
o = SrsAmf0Any::boolean(false);
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
EXPECT_EQ(o->total_size(), s.pos());
@ -632,7 +632,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
s.reset();
o = SrsAmf0Any::null();
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
EXPECT_EQ(o->total_size(), s.pos());
@ -651,7 +651,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
s.reset();
o = SrsAmf0Any::undefined();
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
EXPECT_EQ(o->total_size(), s.pos());
@ -670,7 +670,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
s.reset();
o = SrsAmf0Any::str("winlin");
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
EXPECT_EQ(o->total_size(), s.pos());
@ -680,7 +680,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
SrsAmf0Any* po = NULL;
EXPECT_EQ(ERROR_SUCCESS, srs_amf0_read_any(&s, &po));
ASSERT_TRUE(NULL != po);
SrsAutoFree(SrsAmf0Any, po, false);
SrsAutoFree(SrsAmf0Any, po);
ASSERT_TRUE(po->is_string());
EXPECT_STREQ("winlin", po->to_str().c_str());
}
@ -690,7 +690,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
s.reset();
o = SrsAmf0Any::number(10);
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
EXPECT_EQ(o->total_size(), s.pos());
@ -700,7 +700,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
SrsAmf0Any* po = NULL;
EXPECT_EQ(ERROR_SUCCESS, srs_amf0_read_any(&s, &po));
ASSERT_TRUE(NULL != po);
SrsAutoFree(SrsAmf0Any, po, false);
SrsAutoFree(SrsAmf0Any, po);
ASSERT_TRUE(po->is_number());
EXPECT_DOUBLE_EQ(10, po->to_number());
}
@ -710,7 +710,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
s.reset();
o = SrsAmf0Any::boolean(true);
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
EXPECT_EQ(o->total_size(), s.pos());
@ -720,7 +720,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
SrsAmf0Any* po = NULL;
EXPECT_EQ(ERROR_SUCCESS, srs_amf0_read_any(&s, &po));
ASSERT_TRUE(NULL != po);
SrsAutoFree(SrsAmf0Any, po, false);
SrsAutoFree(SrsAmf0Any, po);
ASSERT_TRUE(po->is_boolean());
EXPECT_TRUE(po->to_boolean());
}
@ -730,7 +730,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
s.reset();
o = SrsAmf0Any::null();
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
EXPECT_EQ(o->total_size(), s.pos());
@ -740,7 +740,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
SrsAmf0Any* po = NULL;
EXPECT_EQ(ERROR_SUCCESS, srs_amf0_read_any(&s, &po));
ASSERT_TRUE(NULL != po);
SrsAutoFree(SrsAmf0Any, po, false);
SrsAutoFree(SrsAmf0Any, po);
ASSERT_TRUE(po->is_null());
}
@ -749,7 +749,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
s.reset();
o = SrsAmf0Any::undefined();
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
EXPECT_EQ(o->total_size(), s.pos());
@ -759,7 +759,7 @@ VOID TEST(AMF0Test, ApiAnyIO)
SrsAmf0Any* po = NULL;
EXPECT_EQ(ERROR_SUCCESS, srs_amf0_read_any(&s, &po));
ASSERT_TRUE(NULL != po);
SrsAutoFree(SrsAmf0Any, po, false);
SrsAutoFree(SrsAmf0Any, po);
ASSERT_TRUE(po->is_undefined());
}
@ -841,44 +841,44 @@ VOID TEST(AMF0Test, ApiAnyAssert)
// any convert
if (true) {
o = SrsAmf0Any::str();
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
EXPECT_TRUE(o->is_string());
}
if (true) {
o = SrsAmf0Any::number();
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
EXPECT_TRUE(o->is_number());
}
if (true) {
o = SrsAmf0Any::boolean();
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
EXPECT_TRUE(o->is_boolean());
}
if (true) {
o = SrsAmf0Any::null();
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
EXPECT_TRUE(o->is_null());
}
if (true) {
o = SrsAmf0Any::undefined();
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
EXPECT_TRUE(o->is_undefined());
}
if (true) {
o = SrsAmf0Any::object();
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
EXPECT_TRUE(o->is_object());
}
if (true) {
o = SrsAmf0Any::ecma_array();
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
EXPECT_TRUE(o->is_ecma_array());
}
// empty object
if (true) {
o = SrsAmf0Any::object();
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
s.reset();
EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
EXPECT_EQ(1+3, s.pos());
@ -887,7 +887,7 @@ VOID TEST(AMF0Test, ApiAnyAssert)
// empty ecma array
if (true) {
o = SrsAmf0Any::ecma_array();
SrsAutoFree(SrsAmf0Any, o, false);
SrsAutoFree(SrsAmf0Any, o);
s.reset();
EXPECT_EQ(ERROR_SUCCESS, o->write(&s));
EXPECT_EQ(1+4+3, s.pos());
@ -901,7 +901,7 @@ VOID TEST(AMF0Test, ApiObjectProps)
// get/set property
if (true) {
o = SrsAmf0Any::object();
SrsAutoFree(SrsAmf0Object, o, false);
SrsAutoFree(SrsAmf0Object, o);
EXPECT_TRUE(NULL == o->get_property("name"));
@ -917,7 +917,7 @@ VOID TEST(AMF0Test, ApiObjectProps)
// index property
if (true) {
o = SrsAmf0Any::object();
SrsAutoFree(SrsAmf0Object, o, false);
SrsAutoFree(SrsAmf0Object, o);
o->set("name", SrsAmf0Any::str("winlin"));
EXPECT_STREQ("name", o->key_at(0).c_str());
@ -937,7 +937,7 @@ VOID TEST(AMF0Test, ApiObjectProps)
// ensure property
if (true) {
o = SrsAmf0Any::object();
SrsAutoFree(SrsAmf0Object, o, false);
SrsAutoFree(SrsAmf0Object, o);
EXPECT_TRUE(NULL == o->ensure_property_string("name"));
EXPECT_TRUE(NULL == o->ensure_property_number("age"));
@ -957,7 +957,7 @@ VOID TEST(AMF0Test, ApiObjectProps)
// count
if (true) {
o = SrsAmf0Any::object();
SrsAutoFree(SrsAmf0Object, o, false);
SrsAutoFree(SrsAmf0Object, o);
EXPECT_EQ(0, o->count());
@ -979,7 +979,7 @@ VOID TEST(AMF0Test, ApiEcmaArrayProps)
// get/set property
if (true) {
o = SrsAmf0Any::ecma_array();
SrsAutoFree(SrsAmf0EcmaArray, o, false);
SrsAutoFree(SrsAmf0EcmaArray, o);
EXPECT_TRUE(NULL == o->get_property("name"));
@ -995,7 +995,7 @@ VOID TEST(AMF0Test, ApiEcmaArrayProps)
// index property
if (true) {
o = SrsAmf0Any::ecma_array();
SrsAutoFree(SrsAmf0EcmaArray, o, false);
SrsAutoFree(SrsAmf0EcmaArray, o);
o->set("name", SrsAmf0Any::str("winlin"));
EXPECT_STREQ("name", o->key_at(0).c_str());
@ -1015,7 +1015,7 @@ VOID TEST(AMF0Test, ApiEcmaArrayProps)
// ensure property
if (true) {
o = SrsAmf0Any::ecma_array();
SrsAutoFree(SrsAmf0EcmaArray, o, false);
SrsAutoFree(SrsAmf0EcmaArray, o);
EXPECT_TRUE(NULL == o->ensure_property_string("name"));
EXPECT_TRUE(NULL == o->ensure_property_number("age"));
@ -1035,7 +1035,7 @@ VOID TEST(AMF0Test, ApiEcmaArrayProps)
// count
if (true) {
o = SrsAmf0Any::ecma_array();
SrsAutoFree(SrsAmf0EcmaArray, o, false);
SrsAutoFree(SrsAmf0EcmaArray, o);
EXPECT_EQ(0, o->count());

@ -115,7 +115,7 @@ VOID TEST(HandshakeTest, VerifyFPC0C1)
// manually validate the c1
// @see: calc_c1_digest
char* c1s1_joined_bytes = srs_bytes_join_schema0(c1.time, c1.version, &c1.block0.key, &c1.block1.digest);
SrsAutoFree(char, c1s1_joined_bytes, true);
SrsAutoFree(char, c1s1_joined_bytes);
bool is_valid;
ASSERT_EQ(ERROR_SUCCESS, c1.c1_validate_digest(is_valid));

Loading…
Cancel
Save